2012-11-29 52 views
1

我有一個bash腳本在我運行一個MySQL聲明:命令行的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運行的字段終止符?謝謝你的建議。

回答

2

根據對mysql客戶手冊頁:

When used interactively, query results are presented in an ASCII-table format. When used noninteractively (for example, as a filter), the result is presented in tab-separated format.

您使用的是-e使MySQL把它當作一個交互式命令。但客戶端也可以通過stdin接受輸入。這是你想要的:

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

這很完美。我忘了這件事。乾杯。 –