命令行MySQL选择不同的字段终止符

时间:2012-11-29 22:58:14

标签: mysql bash command-line termination metacharacters

我有一个bash脚本,我在其中运行MySQL语句:

#!/usr/bin/env bash

mysql -N --user=foo --password=bar --host=baz -A -D db -e '\
    SELECT ... \
    FROM fieldA, fieldB \
    LIMIT 100'

这很好用。但是,我想获得制表符分隔的结果,而不是返回的表格格式。

我尝试了以下操作,但它出现语法错误:

#!/usr/bin/env bash

mysql -N --user=foo --password=bar --host=baz -A -D db -e '\
    SELECT ... \
    FROM fieldA, fieldB \
    LIMIT 100 \
    FIELDS TERMINATED BY "\t"'

错误是:

  

ERROR 1064 (42000) at line 3: 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 'FIELDS TERMINATED BY "\t"' at line 10

我也试过

    ...
    FIELDS TERMINATED BY \'\t\''

但我得到同样的错误。

是否有正确的方法可以从这种MySQL运行中更改字段终止符?谢谢你的建议。

1 个答案:

答案 0 :(得分:2)

根据mysql客户端的手册页:

  

交互使用时,查询结果以ASCII表格显示   格式。当非交互式使用时(例如,作为过滤器),   结果显示在          制表符分隔格式。

您对-e的使用使得mysql将其视为交互式命令。但客户端也可以通过stdin接受输入。这就是你想要的:

mysql -N --user=foo --password=bar --host=baz -A db <<-'EOF'
    SELECT ...
    FROM fieldA, fieldB
    LIMIT 100
EOF