mysql错误1406
我已经创建了一个数据库&我正在尝试从电子表格csv文件加载数据。里面还没有数据。当我跑的时候mysql错误1406,mysql,Mysql,我已经创建了一个数据库&我正在尝试从电子表格csv文件加载数据。里面还没有数据。当我跑的时候 LOAD DATA INFILE 'docs.csv' INTO list FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' (vendor, title, project, description, shelf); 我收到一条消息“错误1406(22001):第1行“供应商”列的数据太长”。第1行的供应商条目长度为6个字符。我创建的表如下所示:
LOAD DATA INFILE 'docs.csv' INTO list FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' (vendor, title, project, description, shelf);
我收到一条消息“错误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是否正确&回车是否会引起问题?此列的值太长 尝试将50更改为100,如下所示
CREATE TABLE list (
autonumber SERIAL,
vendor varchar(100),
title varchar(100),
project varchar(100),
description text,
shelf smallint UNSIGNED,
PRIMARY KEY(autonumber));
我认为在字段中使用回车符会造成麻烦,因为行分隔符是\n。我相信,在一个字段中的回车将被视为记录的结尾。如果您可以在字段中添加带引号的标识符,这可能会有所帮助 您需要将此条款添加到INFLE语句中:
OPTIONALLY ENCLOSED BY '"'
给出填充的完整路径,并按照以下步骤执行代码
LOAD DATA INFILE 'docs.csv' INTO TABLE list
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n' (vendor, title, project, description, shelf);
给出内嵌的路径,如下例所示
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);
希望这能对您有所帮助。可能您的csv文件编码与mysql字符集不同,这也会导致“错误1406(22001):第1行“供应商”列的数据太长” 例如,如果您的mysql字符集是GBK,而您的csv文件是以UTF-8编码的,那么在加载时将导致相同的错误
只需将文件编码更改为与mysql字符集相同。您指定字段以制表符结尾-这是CSV文件中的实际分隔符吗?看起来没有找到分隔符,mySQL正试图将所有内容作为结果插入供应商列。在电子表格中,选项卡显然会从一个单元格移动到下一个单元格,也就是说,每个字段都在一个单独的单元格中。如果我在文本编辑器中打开文档,它会显示“Jacobs,摘要报告,新工厂介绍项目,…”,每个条目似乎用逗号分隔。不过在Description字段中,有一些常用的逗号。即使使用了逗号,它们也会被转义,很可能是被括在
“
字符中。请参阅@Tom的答案,让mySQL知道这一点。