2014-09-22 6 views
0

.txt 파일에서 mySQL 테이블로 읽는 작업이 제공되었습니다. 내가 한 일은 다음과 같습니다.str_to_date를 사용하여 .txt 파일에서 날짜 유형을 읽을 때 mysql 문제가 발생했습니다.

CREATE TABLE PERSON(PIDM INT, FNAME VARCHAR(20), LNAME VARCHAR(20), SSN INT(8), DOB DATE, GENDER CHAR(2)); 

LOAD DATA LOCAL INFILE '/pathtoTextFile' 
    INTO TABLE PERSON 
    FIELDS TERMINATED BY ', ' 
    LINES TERMINATED BY '\n' 
    IGNORE 1 ROWS 
    (PIDM, FNAME, LNAME, SSN, @DATE, GENDER) 
    SET DOB = STR_TO_DATE(@DATE, '%m-%d-%Y'); 

하지만 이렇게하면 여러 경고가 표시됩니다. 나는 내가 STR_TO_DATE 기능/방법에서 잘못된 날짜를 얻을 이유를 알아낼 수 없었다

+---------+------+-----------------------------------------------------------------+ 
| Level | Code | Message               | 
+---------+------+-----------------------------------------------------------------+ 
| Warning | 1411 | Incorrect datetime value: '12/14/1957' for function str_to_date | 
| Warning | 1411 | Incorrect datetime value: '01/13/1969' for function str_to_date | 
| Warning | 1264 | Out of range value for column 'SSN' at row 3     | 
| Warning | 1411 | Incorrect datetime value: '02/14/1976' for function str_to_date | 
| Warning | 1366 | Incorrect integer value: '' for column 'SSN' at row 4   | 
| Warning | 1411 | Incorrect datetime value: '03/12/1989' for function str_to_date 

: 포함 . 이것은 학습 훈련 기관으로되어 있지만 2 시간 동안 그곳에 있었으므로 어디에도 없었습니다. 누구든지 내가 뭘 잘못하고 있는지에 대한 조언이나 생각이 있습니까?

감사합니다.

P. 그 목적은 .txt 파일이 작동하도록 변경하지 않고 잘못된 입력을 처리 할 수 ​​있도록하는 것입니다.

+0

년 월 일 사이의 문자를 고려 했습니까? 당신은 대시를 지정했습니다, 그러나 오류는 슬래시를 보여줍니다. –

+0

재밌는 것은 제가 '/'로 바꾸려고했으나 분명히하지 않았고, 돌아 왔을 때 효과가있었습니다. 감사. SSN이 8 자리가 아니라면 NULL의 값을 어떻게 지정합니까? –

+0

'case (length) (ssn) <> 8 인 경우 NULL, 그렇지 않으면 SSN end'; 그러나 당신은이 질문을 의미해야한다 대답을 아래로 응시하여 답변을 –

답변

0

소스 데이터에 따라 다르지만 MM/DD/YYYY와 MM-DD-YYYY가 혼합되어 있으면 원하지 않는 구분 기호를 원하는 구분 기호로 바꾸고 날짜로 변환 할 수 있습니다.

참고 : 1 월 및 1 월 형식은 모호하므로 (예 : 2014 년 7 월 8 일이 7 월 또는 8 월의 날짜 일 수 있음) 가능한 경우 피해야합니다.

+0

, 내가 도와 줄 수 기쁘게 생각합니다. –