쉼표로 구분 된 3-4 열의 숫자 값을 포함 할 수있는 파일이 있습니다. 빈 필드는 행 끝에있을 때 예외로 정의됩니다.
1,2,3,4,5
1,2,3,,5
1,2,3
다음 테이블은 MySQL에서 생성되었습니다.
+ ------- + -------- + ------ + ----- + --------- + ------- + | 분야 | 타입 | 널 | 키 | 기본 | 추가 | + ------- + -------- + ------ + ----- + --------- + ------- + | 하나 | int (1) | 예 | | NULL | | | 두 | int (1) | 예 | | NULL | | | 세 | int (1) | 예 | | NULL | | | 네 | int (1) | 예 | | NULL | | | 다섯 | int (1) | 예 | | NULL | | + ------- + -------- + ------ + ----- + --------- + ------- +
MySQL LOAD 명령을 사용하여 데이터를로드하려고합니다.
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS
TERMINATED BY "," LINES TERMINATED BY "\n";
결과 테이블 :
+ ------ + ------ + ------- + ------ + ------ + | 하나 | 두 | 세 | 네 | 다섯 | + ------ + ------ + ------- + ------ + ------ + | 1 | 2 | 3 | 4 | 5 | | 1 | 2 | 3 | 0 | 5 | | 1 | 2 | 3 | NULL | NULL | + ------ + ------ + ------- + ------ + ------ +
문제는 원시 데이터에서 필드가 비어 있고 정의되지 않은 경우 어떤 이유로 MySQL은 열 기본값 (NULL)을 사용하지 않고 0을 사용한다는 사실에 있습니다. 필드가 모두 누락 된 경우 NULL이 올바르게 사용됩니다.
불행히도,이 단계에서 NULL과 0을 구별 할 수 있어야 도움을 얻을 수 있습니다.
고마워요
편집하다
SHOW WARNINGS의 출력 :
+ --------- + ------ + -------------------------------- ------------------------ + | 레벨 | 코드 | 메시지 | + --------- + ------ + -------------------------------- ------------------------ + | 경고 | 1366 | 잘못된 정수 값 : 2 행의 '4'열에 대해 ''| | 경고 | 1261 | 행 3에 모든 열에 대한 데이터가 포함되어 있지 않습니다 | | 경고 | 1261 | 행 3에 모든 열에 대한 데이터가 포함되어 있지 않습니다 | + --------- + ------ + -------------------------------- ------------------------ +
LOAD DATA
. 데이터 스키마 변경에 대한 d6tstack SQL 예제 섹션을 참조하십시오 .