이 작업을 수행할 수 있는 방법이 있는지 궁금합니다.
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) )"