我的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'等,但仍无济于事。
非常感谢任何帮助。
答案 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无法告诉如何将输入字段与表列匹配。