Postgres 9.3 end-of-copy marker corrupt - Any way to change this setting?

awk, postgresql, sql

Solution

You can try to filter your data through `sed 's:\\:\\\\:g'` - this would change every `\` in your data to `\\`, which is a correct escape sequence for single backslash in copy data.

But I think not only backslash would be problematic. Also newlines should be encoded by `\n`, carriage returns as `\r` and tabs as `\t` (tab is a default field delimiter in copy).

Problem

I am trying to stream data through an AWK program to a Postgres COPY command. This works great usually. However, in my data recently I have been getting long text stings containing '\.' values. Postgres Documentation mentions this combination of characters represents the end-of-data marker, http://www.postgresql.org/docs/9.2/static/sql-copy.html, and I am getting the associated errors when trying to insert with COPY. My question is, is there a way to turn this off? Perhaps change the end-of-data marker to a different combination of characters? Or do I have to alter/remove these strings before trying to insert using the COPY command?

Original source