【问题标题】:Command-line MySQL select with different field terminator具有不同字段终止符的命令行 MySQL 选择
【发布时间】:2012-11-18 03:34:25
【问题描述】:

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

【问题讨论】:

    标签: mysql bash command-line termination metacharacters


    【解决方案1】:

    根据 mysql 客户端的手册页:

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

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

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

    【讨论】:

    • 这太完美了。我忘了这件事。干杯。
    猜你喜欢
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多