명령줄에서 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) )"

관련 정보