2016-12-30 5 views
1

私はカンマ区切りのcsvファイルを持っています。簡素化、それは次のようになります。今、私はループ内-cオプションでpsqlのクエリを実行したいと思いますstoudへのループ内にpsqlクエリの単一データを出力

#!/bin/bash 
while IFS=, read uuid other_data 
do 
    echo $uuid 
done < $1 

と:

uuid,other_data # this one is not presented, just the data 
uuid1,other_data1 
uuid2,other_data2 
... 
uuidN,other_dataN 

そして私は、それはこのようにbashスクリプトでそれをループしています今のところ、結果を印刷するだけです。しかし、データが必要です。完全なpsql出力ではありません。すなわち、以下:

#!/bin/bash 
while IFS=, read uuid other_data 
do 
    psql -h <host> -p <port> -U <user> <database> -c "select some_column from some_table where uuid='$uuid'" 
done < $1 

...このようなものになります:

some_column 
--------------- 
8410043071264 
(1 row) 

    some_column 
--------------- 
8410069001030 
(1 row) 

にはどうすれば値のみを得ることができますか? (8410043071264,8410069001030)。ループ内で何かを行うために変数にロードすることはできますか?これはうまくいきませんが、ループの中でsome_column=$(psql -h <host> -p <port> -U <user> <database> -c "select some_column from some_table where uuid='$uuid'")echo $some_column

+3

-t psql用_fineのmanual_は言う: '等これは、列名と結果の行数フッタの印刷をオフにし-t \ tコマンドと同じです。 " – Ctx

+0

本当に良い点です、ありがとうございます。 – y2josei

答えて

1

のように-tオプションを試すことができます。

psql -h <host> -p <port> -U <user> <database> -t -c "select some_column from some_table where uuid='$uuid'" 

のみタプル(NOヘッダ/フッタ):

+0

はい、@Ctxと同じです。さらにsome_column = $(psql -h -p -U -t -c)some_tableからsome_columnを選んでください。ここで、uuid = '$ uuid' ")'がうまくいきます。ありがとう! – y2josei

関連する問題