【问题标题】:Syntax error when using SELECT INTO OUTFILE使用 SELECT INTO OUTFILE 时出现语法错误
【发布时间】:2010-11-22 20:02:46
【问题描述】:

当我运行以下查询时

SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

直接来自 MySQL 文档,我得到一个语法错误。我没有test_table 表,我知道这个语句实际上不起作用,但它似乎不应该给出语法错误。如果我直接从 MySQL 文档中得到语法错误,会发生什么?

这是我正在查看的文档 (5.1): http://dev.mysql.com/doc/refman/5.1/en/select.html

这是我的 MySQL 版本:

mysql  Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (i686) using readline 6.1

【问题讨论】:

  • 您是否尝试为 OUTFILE 使用 Windows 路径?反斜杠字符是 MySQL 字符串文字中的转义字符。
  • 不。我正在使用上面的代码。不过,好主意。
  • 可能是由于错误:bugs.mysql.com/bug.php?id=58601 默认工作台在选择查询上拍打“限制 1000”

标签: mysql sql mysql-error-1064 into-outfile


【解决方案1】:

此代码对我有用。

一开始我遇到了Unknown table 'test_table' in my_db 错误。

创建表CREATE TABLE test_table (a VARCHAR(255), b VARCHAR(255)) 后,它就可以工作了。没有语法错误。

编辑:

从官方mysql 命令行客户端运行查询可以避免您的GUI客户端中的潜在错误并给出更准确的错误消息。

【讨论】:

  • 因此,如果该语法确实正确,则可能是某种配置问题。
  • 我不知道发生了什么,但尝试从mysql 命令行客户端运行该查询。它应该在那里工作。
  • 你是对的!有效。更准确地说,它给出了更合适的错误信息。以root身份登录,它可以工作。以我在 IDE 中使用的同一用户身份登录,但访问被拒绝,我知道如何解决。谢谢!
【解决方案2】:

根据您使用的语言,您可能需要对某些字符进行转义。

php 示例:

$sql = "SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'"
    . " FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'"
    . " LINES TERMINATED BY '\\n'"
    . " FROM test_table;";

【讨论】:

  • 不,我只是将它直接粘贴到我的 IDE 中。
猜你喜欢
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 2014-10-04
  • 2016-03-20
  • 2012-02-26
  • 2014-05-28
  • 2011-02-21
  • 2013-03-24
相关资源
最近更新 更多