我创建了一个数据库&我正在尝试从电子表格csv文件加载数据。它还没有数据。我跑的时候
LOAD DATA INFILE 'docs.csv' INTO list FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' (vendor, title, project, description, shelf);
我收到消息“ ERROR 1406(22001):第1行列'供应商'的数据太长了”。第1行的供应商条目长度为6个字符。我按如下方式创建了我的表:
CREATE TABLE list (
autonumber SERIAL,
vendor varchar(50),
title varchar(100),
project varchar(100),
description text,
shelf smallint UNSIGNED,
PRIMARY KEY(autonumber));
有逗号&在描述列的许多条目中回车(Alt + Enter在电子表格中);我是否正确使用\ t作为FIELDS TERMINATED命令&回车会引起麻烦吗?
答案 0 :(得分:0)
此列的值太长
尝试从50改为100
CREATE TABLE list (
autonumber SERIAL,
vendor varchar(100),
title varchar(100),
project varchar(100),
description text,
shelf smallint UNSIGNED,
PRIMARY KEY(autonumber));
答案 1 :(得分:0)
我认为你的字段中有回车字符会导致麻烦,因为你的行分隔符是\ n。字段中的回车将被视为我认为的记录的结尾。如果您可以在字段中添加带引号的标识符,则可能有所帮助。
您需要将此子句添加到您的infile语句中:
OPTIONALLY ENCLOSED BY '"'
答案 2 :(得分:0)
提供infile的完整路径并按照以下方式执行代码。
LOAD DATA INFILE 'docs.csv' INTO TABLE list
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n' (vendor, title, project, description, shelf);
给出infile的路径,就像下面的例子一样。
load data local infile 'c:/xampp/htdocs/example.csv'
into table mytbl fields terminated by ','
enclosed by '"'
lines terminated by '\r\n'
ignore 1 lines (f_name,age,id);
希望这会帮助你。
答案 3 :(得分:0)
也许你的csv文件编码与mysql字符集不同,这也会导致 “ERROR 1406(22001):第1行的列'供应商'的数据太长了” 强>
例如,如果你的mysql字符集是GBK,而你的csv文件是用UTF-8编码的,那么加载时会导致同样的错误。只需将文件编码更改为与mysql字符集相同。