2015-04-02 148 views
-1

我在使用我的MySQL版本(Ubuntu 10.04版本5.1.63)时遇到了一个非常奇怪的错误。下面是我使用LOAD DATA LOCAL INFILE 1064错误是否由于文件头信息?

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'等,但仍然无济于事。

任何帮助将不胜感激。

+0

这似乎并非是一个完整的命令 认为你的错误就出在这里('field1','field2','field3','field4','field5','field6'; – remudada 2015-04-02 12:18:14

+0

NO呼喊PLEASE人们正在尝试睡觉 – EJP 2015-04-02 13:05:01

+0

remudada - 这是一个错字(经过整夜的工作后),它应该读取'(field1,field2,field3,field4,field5,field6);' – 2015-04-02 17:09:21

回答

0

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

在列表中,我相信在结尾处缺少右括号。

如果输入文件中的字段顺序与表中列的顺序不同,您可以指定一个列列表。否则,MySQL无法知道如何将输入字段与表列匹配。

+0

是的,当我在今天早些时候输入时,右括号仅仅是一个错字。我指定列列表是因为输入文件中字段的顺序与列的顺序不同。 – 2015-04-02 17:14:02

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 
+0

你的建议没有任何建议工作或提供任何不同的结果,我已经得到。虽然我很欣赏你的回复。 – 2015-04-02 17:16:22

+0

如何添加REPLACE像这样LOAD DATA LOCAL INFILE'/home/file/path/file.csv'REPLACE INTO TABLE tbl_abc – 2015-04-02 17:21:55