Thread: \COPY in script

\COPY in script

From
Binand Sethumadhavan
Date:
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


Re: \COPY in script

From
Tom Lane
Date:
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


Re: \COPY in script

From
Binand Sethumadhavan
Date:
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