Shell - 通过sql结果循环

时间:2014-01-30 09:53:50

标签: sql bash

我非常试图遍历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

2 个答案:

答案 0 :(得分:1)

对于这类任务,我使用AWK。

例如,如果您想获得第一列和第三列:

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

$ X是访问第X列的方式,就像“数组表示法”。

显然你可以使用AWK做更多复杂的tak; - )

答案 1 :(得分: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和分隔符访问字段