SQL LOAD DATA INFILE问题
问题描述:
如何获取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)
);
我的文件:
,name1,junk1,
,name2,junk2,
,name3,junk3,Y
不声明:
LOAD DATA INFILE 'myfile' INTO TABLE stuff FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
自动跳过自动递增,并处理它正常吗?它似乎处理一切正常,但这会产生以下警告:
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
在开始时删除逗号不会正确输入数据。
答
您可以明确地将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;