2017-09-21 16 views
0

私はbashスクリプトと配列変数を持っています。配列は次のように初期化され ...bash配列をPSQL配列に変換する方法

ARRVAR =(0001 0002 0003)

は今、私はPSQLに照会する配列を使用したいです。 これは

QUERY1 = ...私のクエリである "テーブルSELECT * FROM WHERE column1の& & '$のpsql_array'" column1のはvarchar型[]で、それは別のものに比較して

配列(psql_array)はPSQL配列に変換されたbash配列変数でなければなりません。

bash配列をPSQL配列に変換する方法はありますか?

答えて

0
# printf to a variable (psql_array) replacing single quotes by two single quotes 
printf -v psql_array "'%s'," "${ARRVAR[@]//\'/\'\'}" 
# remove the trailing , 
psql_array=${psql_array%,} 

# check 
echo "($psql_array)" 


# or to have a postgresql varchar[] 
# escape double quote between double quotes 
printf -v psql_array "\"%s\"," "${ARRVAR[@]//\"/\\\"}" 
psql_array=${psql_array%,} 
echo "{$psql_array}" 

# or easier 
printf -v psql_array "'%s'::varchar," "${ARRVAR[@]//\'/\'\'}" 
echo "ARRAY[${psql_array%,}]" 
+0

私は '%s'の一重引用符を削除し、echo "($ psql_array)"内の引用符を中括弧に置き換えました。 ありがとうございました。 –

+0

私はpostgresql配列を持つ答えを編集しました.SQLインジェクションに注意する必要があります。そのため、引用符を処理する必要があります。 –

+0

ありがとうございました! –

関連する問題