2014-01-30 37 views
0

我試圖循環查詢sql查詢結果... 它工作得很好,除了字符串中有空格的變量使我輸出奇怪......就像它們被認爲是數組或類似的東西一樣......任何想法 ??殼 - 通過sql結果循環

echo "SELECT shop_id, shop_address1, shop_address2, shop_zip, shop_city FROM base.table" | mysql -h hostname -u user -ppassword | while read -r shop_id shop_address1 shop_address2 shop_zip shop_city; 
do 
     echo $shop_address1 
done 
+0

你能不能給我們一個例子做更復雜的TAKS? 'mysql'命令的輸出將會很有幫助。 – dogbane

+0

我的地址存儲爲「1 market street」,並顯示爲1 1 10 11(...)market duboce folsom(...)street street street(...)。 但echo $ shop_id是好的,我有600行顯示從1到600 ...因爲地址是奇怪的不顯示有序和分隔空間和 –

回答

0

使用OUTFILE提取到csv

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

然後使用cut和分隔符來訪問領域

1

對於這種我用AWK任務。

例如,如果你想獲得第一和第三列:

mysql -u <USER> -p<PASSWORD> -h <HOST> < <QUERY_FILE> | awk -F"\t" '{print $1","$3;}' - 

$ X就是這樣,ACCES到第X列,它像「排列標記」。

很明顯,你可以使用AWK ;-)