コマンドラインからpsqlにリストを渡すには?

コマンドラインからpsqlにリストを渡すには?

これを行う方法があるかどうか疑問に思います。

lab-2:/tmp# echo  46692,46694,46696,46704,46708,46709,46713,46730,46736,46574 > deletelist.txt
lab-2:/tmp# cat deletelist.txt
46692,46694,46696,46704,46708,46709,46713,46730,46736,46574

その後、psqlを介して削除コマンドにリストを渡したいと思います。これは私が今まで試してきたものですが、見てわかるように失敗します。

   lab-2:/tmp# psql -U test testdb -c "Delete from widgets where id in (" <deletelist.txt ")"
    psql: warning: extra command-line argument ")" ignored
    ERROR:  syntax error at end of input
    LINE 1: Delete from mist_cdr where id in (
                                          ^

編集1

提案された回答を試すと、次の結果が表示されます。

lab-2:/tmp# psql -U test testdb -c "delete from widgets where id in ( $(</tmp/deletelist.txt ))"
ERROR:  syntax error at or near ")"
LINE 1: delete from widgets where id in ( )
                                           ^
lab-2:/tmp#

また、以下のようにパスなしで同じコマンドを試しました。

lab-2:/tmp# psql -U test testdb -c "delete from widgets where id in ( $(<deletelist.txt ))"

しかし、結果は同じです。

ベストアンサー1

コマンドの置き換えに使用してみてください。

psql -U test testdb -c "Delete from widgets where id in ( $(<deletelist.txt) )"

おすすめ記事