2011-03-09 5 views
0

LOAD DATA INFILE 명령을 사용하여 특정 필드를 건너 뛰는 방법은 무엇입니까?SQL LOAD DATA INFILE 질문

CREATE TABLE stuff (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL, 
    name CHAR(64) NOT NULL, 
    junk CHAR(64) NOT NULL, 
    a ENUM('N','Y') NOT NULL DEFAULT 'N', 
    PRIMARY KEY (id) 
); 

그리고 내 파일 :

나는 다음과 같은 테이블이 있다고 가정하자

LOAD DATA INFILE 'myfile' INTO TABLE stuff FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; 

자동으로 자동 증가를 생략하고 그것을 처리 :

,name1,junk1, 
,name2,junk2, 
,name3,junk3,Y 

는 문을 수행 정확히? 모든 것을 올바르게 처리하는 것으로 보이지만 다음과 같은 경고가 나타납니다.

Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 1 
Warning (Code 1265): Data truncated for column 'a' at row 1 
Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 2 
Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 3 
Warning (Code 1265): Data truncated for column 'a' at row 3 
Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 4 

처음에 쉼표를 제거해도 데이터가 제대로 입력되지 않습니다.

답변

2

id를 NULL로 명시 적으로 설정하여 자동 증가 값을 사용할 수 있습니다.

LOAD DATA INFILE 'myfile' 
INTO TABLE stuff 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
SET id = NULL; 
나는 또한 첫 번째 쉼표를 제거하고 명시 적으로 파일의 열을 나열하는 것이 좋습니다

:

LOAD DATA INFILE 'myfile' 
INTO TABLE stuff 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(name,junk,a) 
SET id = NULL; 
관련 문제