mysql错误1406

时间:2013-03-19 16:54:39

标签: mysql

我创建了一个数据库&我正在尝试从电子表格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命令&回车会引起麻烦吗?

4 个答案:

答案 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字符集相同。