LOAD DATA INFILE 'thefile.csv'
INTO TABLE word
FIELDS TERMINATED BY ';'
IGNORE 1 LINES
SET id = NULL;
我有点不知道在这里做什么,我以为这个查询会起作用,但它没有。我收到有关id的错误,这就是为什么我认为set id = NULL会让它很好,但没有。我的 id 行(AUTO_INCREMENT)的要点是我不需要指定 ID。嗯。任何帮助将不胜感激
Incorrect integer value: '' for column 'id' at row 1
我的 CSV 文件内容:
id;meaning;japanese;kanji;kana;romaji;visible;featured;image;image_author;imgauthor_link;extra
;pants;パンツ;;パンツ;pantsu;;;;;;
必须指定除 id 列之外的所有列名:
LOAD DATA INFILE 'thefile.csv'
INTO TABLE word
FIELDS TERMINATED BY ';'
IGNORE 1 LINES
(col1,col2,col3);
我假设您的表有(id,col1,col2,col3)列。
您可以使用两步加载:
1)将数据加载到表中;
2) 使用INSERT INTO ... SELECT ... FROM
获取表中的数据
例:
CREATE TABLE baseData (
All your column definitions, but not your id column
);
INSERT INTO (all your columns except the id column) SELECT * FROM baseData;
替代选项:
使用 id 作为最后一列创建表,然后使用 LOAD DATA INFILE 进行加载
就我而言,此错误发生在其他列中,而不是主键中。
解决方案是将任何空值替换为 ,而不是将它们保留为,, .
cat example.csv
1,foobar,1,0,1
2,barfoo,,,
3,foofoo,,,
可以使用 sed 将空值替换为 \N 空值。
cat example.csv | sed -e ':a' -e 's/,,/,\N,/g; s/,$/,\N/g; ta'
1,foobar,1,0,1
2,barfoo,N,N,N
3,foofoo,N,N,N
注意:使用 而不是 。