2014-01-30 64 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 ;-)