Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql错误1406_Mysql - Fatal编程技术网

mysql错误1406

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个字符。我创建的表如下所示:

我已经创建了一个数据库&我正在尝试从电子表格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个字符。我创建的表如下所示:

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知道这一点。