The documentation says: "The specified null string is sent by COPY TO without adding any backslashes; conversely, COPY FROM matches the input against the null string before removing backslashes." -- http://www.postgresql.org/docs/devel/static/sql-copy.html
Those seem inconsistent with the following behavior: postgres=# copy foo to '/tmp/a.copy' null '\0'; COPY 2 postgres=# copy foo from '/tmp/a.copy' null '\0'; ERROR: invalid byte sequence for encoding "UTF8": 0x00 CONTEXT: COPY foo, line 2: "\0" $ cat /tmp/a.copy 1 \0 COPY TO seems to follow the documentation, inserting the null string without modification into the output file. COPY FROM seems to de-escape the input before trying to match it against the null string, leading to the invalid byte sequence. standard_conforming_strings is on. Regards, Jeff Davis -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs