COPY x FROM STDIN escape handlers

Started by Marc Lavergneover 23 years ago3 messages
#1Marc Lavergne
mlavergne-pub@richlava.com

Just to give a little background, using pgdump in "default" mode creates
a dump file that includes inline newlines and tabs. The solution is to
use the -Fc option but it's a little late for that if all one has is a
"default" dump file. I was hoping to simply run a conversion on the file
to create an "escaped" version of the file, but none of the traditional
escape methods appear to work (ie. \n, \010, 0x10, etc).

The code errors out in CopyReadNewline() but it's the result of a call
from CopyFrom(). From what I can see, there is no escape handler in the
CopyFrom function. So, should this be considered an enhancement or is
there an underlying reason why it isn't there? If it's an enhancement,
I'll patch it and submit it but I *really* don't want to end up with a
non-standard version of PostgreSQL!

Thanks in advance!

Marc L.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Marc Lavergne (#1)
Re: COPY x FROM STDIN escape handlers

Marc Lavergne <mlavergne-pub@richlava.com> writes:

Just to give a little background, using pgdump in "default" mode creates
a dump file that includes inline newlines and tabs.

How old a PG release are you using? COPY has quoted special characters
properly for a long time.

regards, tom lane

#3Marc Lavergne
mlavergne-pub@richlava.com
In reply to: Marc Lavergne (#1)
Re: COPY x FROM STDIN escape handlers

I see the problem now. It was my file parser that was escaping the value
then passing it to PQescapeString which resulted in \\n instead of \n.
Guess I was on a wild goose chase. I guess PQescapeString() and
PQputline() are mutally exclusive ... my bad!

Thanks,

Marc L.

Tom Lane wrote:

Show quoted text

Marc Lavergne <mlavergne-pub@richlava.com> writes:

Just to give a little background, using pgdump in "default" mode creates
a dump file that includes inline newlines and tabs.

How old a PG release are you using? COPY has quoted special characters
properly for a long time.

regards, tom lane