This is a tip for the record in case it helps somebody else in the
future.
I have an import script that relies on a stored procedure that runs as
a trigger on inserts into a temporary table. The script looks like
this:
-- create table
-- ...
-- define procedure and trigger
-- ...
-- import data via COPY command:
COPY temp_table FROM STDIN WITH NULL AS '';
However, when run as "psql -f import.sql <data.file", it does not work
if you use the SQL "COPY" command, even if you are running psql on the
database server. You get an error like this: ERROR: missing data for
column "somecol". An interesting red-herring is that the column
mentioned is not necessarily the first column in the table!
The solution is to use the psql "\COPY" command instead (and remove the
trailing semi-colon, which cannot be used with psql commands). I.e.
this command will work:
\COPY temp_table FROM STDIN WITH NULL AS '';
-Kevin Murphy