Обсуждение: \COPY in script
I am trying to do a summary query in one DB, and populate a table in another. This is how I'm doing it: psql -h db1 -d d1 -U u1 -A -F, -t -f a.sql | psql -h db2 -d d2 -U u2 [...] Now, this ellipsis is what is causing consternation. 1. If the ellipsis is -c "$( < b.sql )" my target table gets populated. 2. If the ellipsis is -f b.sql my target table does not get populated. My b.sql is as follows: \COPY table_name FROM STDIN CSV That's it. Why does (1) work but (2) does not? To the purist in me, (2) is the preferred syntax so what should I do to ensure that it works? TIA, Binand
Binand Sethumadhavan <binand@gmx.net> writes: > I am trying to do a summary query in one DB, and populate a table in another. > This is how I'm doing it: > psql -h db1 -d d1 -U u1 -A -F, -t -f a.sql | psql -h db2 -d d2 -U u2 [...] > Now, this ellipsis is what is causing consternation. > 1. If the ellipsis is -c "$( < b.sql )" my target table gets populated. > 2. If the ellipsis is -f b.sql my target table does not get populated. > My b.sql is as follows: > \COPY table_name FROM STDIN CSV > That's it. Why does (1) work but (2) does not? I think you want "pstdin" not "stdin". See the description of \copy in the psql man page. regards, tom lane
On 7 October 2016 at 22:59, Tom Lane <tgl@sss.pgh.pa.us> wrote: > I think you want "pstdin" not "stdin". See the description of \copy > in the psql man page. Thanks. I also found this article that explained the difference. http://illuminatedcomputing.com/posts/2015/02/postgres_copy_stdin_vs_pstdin/ Binand