Tarlika Elisabeth Schmitz <postgresql2@numerixtechnology.de> writes:
> The following command works fine when pasing it to psql via the -c
> option:
> cat event.csv | \
> psql -c "COPY (event_id, event_name) FROM STDIN DELIMITER AS ',' NULL
> AS ''"
> When executed from a file via -f, it does nothing (no error messages
> either):
> event.sql:
> COPY (event_id, event_name) FROM STDIN DELIMITER AS ',' NULL AS ''
> cat event.csv | psql -f event.sql
I believe that psql's interpretation of "stdin" when reading from a file
is that the COPY data is to come from that same file (look at the script
produced by pg_dump for an example). So it reads to the end of the
file, which is right away --- otherwise you'd get some incorrect-data
errors. The data sourced from the cat command is never noticed at all.
I think you can get the effect you're after using \copy ... from pstdin.
See the psql man page.
regards, tom lane