1

我有一个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 运行中更改字段终止符?谢谢你的建议。

4

1 回答 1

2

根据 mysql 客户端的手册页:

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

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

mysql -N --user=foo --password=bar --host=baz -A db <<-'EOF'
    SELECT ...
    FROM fieldA, fieldB
    LIMIT 100
EOF
于 2012-11-29T23:04:58.907 回答