5

我创建了一个数据库并尝试从电子表格 csv 文件加载数据。里面还没有数据。当我跑

LOAD DATA INFILE 'docs.csv' INTO list FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' (vendor, title, project, description, shelf); 

我收到一条消息“ ERROR 1406 (22001): Data too long for column 'vendor' at row 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);我对 FIELDS TERMINATED 命令使用 \t 是否正确&回车会造成麻烦吗?

4

4 回答 4

0

我认为在你的字段中有回车符会导致麻烦,因为你的行分隔符是 \n。我相信一个字段中的回车将作为记录的结尾。如果您可以将带引号的标识符添加到您的字段中,那可能会有所帮助。

您需要将此子句添加到您的 infile 语句中:

OPTIONALLY ENCLOSED BY '"' 
于 2013-03-19T17:09:54.863 回答
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));
于 2013-03-19T17:00:02.210 回答
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);

希望这会帮助你。

于 2013-12-02T08:17:05.087 回答
0

也许您的 csv 文件编码与 mysql 字符集不同,这也会导致"ERROR 1406 (22001): Data too long for column 'vendor' at row 1"

例如,如果你的mysql字符集是GBK,而你的csv文件是用UTF-8编码的,那么在加载时也会导致同样的错误。

只需将文件编码更改为与 mysql 字符集相同。

于 2015-07-11T02:56:49.060 回答