Workbench나 mysql console에서는 잘 되는데 JDBC로 접속해 "LOAD DATA INFILE"을 하면 안될 때가 있다.
컬럼 개수가 안 맞는다거나 형태를 바꿀 수 없다는 오류 메시지만 계속 나올 뿐이다.
이 문제는 지정한 데이터 파일 내 빈 필드값이 있을 때 간혹(?) 발생한다. 그렇니까, 다음과 같이 구분자가 연속으로 나오는 경우이다.
COL1, COL2, COL3
1,A,B
2,,C
3,D,
1,A,B
2,,C
3,D,
해결방법은 데이터 파일의 빈필드에 문자열 '\N'을 명시적으로 넣어 NULL임을 알려 주는 것이다.
COL1, COL2, COL3
1,A,B
2,\N,\NC
3,D,\N
1,A,B
2,\N,\NC
3,D,\N
이 방법이 여의치 않다면 "LOAD DATA INFILE" 명령을 다음과 같이 실행하여 해결할 수도 있다.
LOAD DATA INFILE 'data file path' REPLACE INTO TABLE_NAME FIELD TERMINATED BY ',' LINES TERMINATED BY '\n' (@V1, @V2, @V3) SET COL1 = NULLIF(@V1, '') , COL2 = NULLIF(@V2, '') , COL3 = NULLIF(@V3, '') ;
데이터를 넣을 테이블에는 컬럼 COL1, COL2, COL3가 있으며, 해결책의 키-포인트는 "SET"을 이용한 부분이다.
댓글 없음:
댓글 쓰기