1

私はbashシェルスクリプトを持っています。データベースからいくつかの行のデータをキャプチャした psql copy コマンドがあります。データベースからのデータは、bash スクリプトで使用する実際の SQL ステートメントです。ステートメントはさまざまな長さであり、特定のステートメントを動的に呼び出すことができるようにしたいので、ステートメントをデータベースに入れます。

1) copy ステートメントで使用する区切り文字がわかりません。コンマやパイプは、データベースからのデータに含まれているため使用できません。それらはデータベースにないため、いくつかのランダムな文字を試しましたが、コピーには適合し、ASCII文字は1つしか必要ありません。

また、複雑にするために、各行の query_name と query_string を取得する必要があります。

これは私が現在持っているものです。コピーですべてのデータを正常に取得できますが、後でループできるように、データを配列にプッシュしたいだけです。

q="copy (select query_name,query_string from query where active=1) 
to stdout delimiter ','" 
statements=$(psql -d ${db_name} -c "${q}")
statements_split=(`echo ${statements//,/ }`)
echo ${statements_split[0]};
4

1 に答える 1

0

query_nameをquery_stringにマッピングする辞書(連想配列)のようなものを実際に構築したいように私には見えます。bash複雑なデータ構造を処理するための最良の選択ではありません。それがオプションである場合、私はPerlこの種のタスクに使用することをお勧めします。

于 2012-09-02T00:37:22.950 に答える