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


---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to