【问题标题】:MySql Load Data Local Syntax?MySql 加载数据本地语法?
【发布时间】:2011-08-05 17:01:54
【问题描述】:

我有一个使用管道“|”的文本文件“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”并且它有效。但是以这种方式填充的数据库将包含不正确的数据。所以我真的很想知道为什么原来的较长查询会失败?

谢谢。

【问题讨论】:

    标签: php mysql sql database phpmyadmin


    【解决方案1】:

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

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

    【讨论】:

    • 我将其更改为双转义,但出现以下错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 ''customer_change' FIELDS TERMINATED BY '|' 附近使用的正确语法ESCAPED BY '\' LINES TERMINATED BY '\' at line 1
    • 是的,我也完全迷路了:(
    【解决方案2】:

    试试这个:

    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());
    

    【讨论】:

    • 我得到不同的错误:字段分隔符参数不是预期的;检查手册
    猜你喜欢
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 2014-10-23
    • 2014-08-13
    • 1970-01-01
    相关资源
    最近更新 更多