我有一个使用管道'|'的文本文件“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”并且它有效。但是以这种方式填充的数据库将包含不正确的数据。所以我真的希望了解为什么原始的较长查询会失败?
感谢。
答案 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());