LOAD DATA LOCAL INFILE 1064因文件头信息而导致的错误?

时间:2015-04-02 12:11:48

标签: mysql mysql-error-1064 mysqlimport

我的MySQL版本(Ubuntu 10.04版本为5.1.63)出现了一个非常奇怪的错误。这是我正在使用的声明

LOAD DATA LOCAL INFILE '/home/file/path/file.csv' INTO TABLE tbl_abc
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' 
IGNORE 1 LINES (`field1`,`field2`,`field3`,`field4`,`field5`,`field6`);

所以输入此命令后,我收到以下回复:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax 
to use near ',,,,laworkfo ftpd27018    173-9-6-225-NewE 
Thu Apr  2 06:30 - 06:30  (00:00)    ' at line 1

奇怪的是,这些数据都没有位于我可以找到它的任何地方。我认为它是某种文件头或文件属性,但我不确定。无论如何,我认为通过添加“IGNORE 1 LINES”会或者应该消除这种情况,但事实并非如此。我曾尝试过“IGNORE 2 LINES”,“IGNORE 3 LINES”,“IGNORE 100 LINES”等。似乎没什么用。

我也尝试过使用其他行分隔符,例如'\ r \ n'等,但仍无济于事。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

如果你把它直接放到sql然后你不必逃避,所以试试这个:

ENCLOSED BY '"'

并改变这个

LINES TERMINATED BY '\n' 

到这个

LINES TERMINATED BY '\r\n' 

也改变这个

FIELDS TERMINATED BY ';'

仅当csv位于设置数据库的服务器外时才使用LOCAL(https://yourdomain.com/files/file.csv否则使用。

LOAD DATA INFILE

答案 1 :(得分:0)

该命令的格式正确 LOAD DATA INFILE' /home/file/path/file.csv' INTO TABLE tbl_abc(col1,col2,...);

在列列表中,我相信最后会有一个错过的结束括号。

如果输入文件中字段的顺序与表中列的顺序不同,则指定列列表。否则,MySQL无法告诉如何将输入字段与表列匹配。