MySql加载数据本地语法?

时间:2011-08-05 17:01:55

标签: php mysql sql database phpmyadmin

我有一个使用管道'|'的文本文件“result.txt”分开领域。我使用了PhpMyAdmin并成功将其导入到我的表中,方法是使用“CSV LOAD DATA”并告诉它字段应该用'|'分隔。

PhpMyAdmin也提供了完整的查询,所以我将其复制并粘贴到我的php脚本中,如下所示:

 mysql_query("LOAD DATA LOCAL INFILE 'C:/wamp/www/TouchStone/result.txt' INTO TABLE customer_change FIELDS TERMINATED BY '|' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' ")
 or die(mysql_error());

我会一直接受错误说:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第2行的'''附近使用正确的语法

我很想知道,因为我复制了phpmyadmin生成的完全相同的查询,我认为它肯定会在这里工作。但为什么会发生这样的错误?

我尝试修剪查询以仅包含“FIELDS TERMINATED BY”并且它有效。但是以这种方式填充的数据库将包含不正确的数据。所以我真的希望了解为什么原始的较长查询会失败?

感谢。

2 个答案:

答案 0 :(得分:2)

您使用的是双引号字符串,因此\r\n将被视为文字回车符和换行符。您还需要对它们进行双重转义:\\r\\n

错误消息中的“第2行”是这样的证据 - 如果您的查询没有实际的第二行,但是由于嵌入的换行符/回车符,有一次它到达MySQL。

答案 1 :(得分:0)

试试这个:

mysql_query("LOAD DATA LOCAL INFILE 'C:/wamp/www/TouchStone/result.txt' INTO TABLE customer_change FIELDS TERMINATED BY '|' ESCAPED BY '//' LINES TERMINATED BY '/r/n' ")
 or die(mysql_error());