\copy command: how to define a tab character as the delimiter

Started by Thomas Kellererabout 16 years ago7 messagesgeneral
Jump to latest
#1Thomas Kellerer
spam_eater@gmx.net

Hi,

I tried to import a text file using the \copy command in psql using the following:

\copy foo (foo, bar) from foobar.txt delimiter as '\t' csv header

but that gives me an error:

ERROR: COPY delimiter must be a single one-byte character

So how can I specify a tab character if I also need to specify that my file has a header line?

Regards
Thomas

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Thomas Kellerer (#1)
Re: \copy command: how to define a tab character as the delimiter

Thomas Kellerer <spam_eater@gmx.net> writes:

\copy foo (foo, bar) from foobar.txt delimiter as '\t' csv header

So how can I specify a tab character if I also need to specify that my file has a header line?

Type an actual tab.

regards, tom lane

#3Thomas Kellerer
spam_eater@gmx.net
In reply to: Tom Lane (#2)
Re: \copy command: how to define a tab character as the delimiter

Tom Lane wrote on 09.03.2010 18:21:

Thomas Kellerer<spam_eater@gmx.net> writes:

\copy foo (foo, bar) from foobar.txt delimiter as '\t' csv header

So how can I specify a tab character if I also need to specify that my file has a header line?

Type an actual tab.

Blush....

That easy?

Thanks
Thomas

In reply to: Thomas Kellerer (#3)
Re: \copy command: how to define a tab character as the delimiter

On 09/03/2010 17:30, Thomas Kellerer wrote:

Tom Lane wrote on 09.03.2010 18:21:

Thomas Kellerer<spam_eater@gmx.net> writes:

\copy foo (foo, bar) from foobar.txt delimiter as '\t' csv header

So how can I specify a tab character if I also need to specify that
my file has a header line?

Type an actual tab.

Blush....

That easy?

This is Postgres you're talking about - of course it's that easy! :-)

Ray.

--
Raymond O'Donnell :: Galway :: Ireland
rod@iol.ie

#5Thomas Kellerer
spam_eater@gmx.net
In reply to: Raymond O'Donnell (#4)
Re: \copy command: how to define a tab character as the delimiter

Raymond O'Donnell wrote on 09.03.2010 18:39:

This is Postgres you're talking about - of course it's that easy! :-)

:)

The main reason I asked, was that the manual actually claims that '\t' can be used ("The following special backslash sequences are recognized by COPY FROM")

As this is part of the description for the COPY command, does this maybe mean it is only valid for COPY but not for \copy?
if that is the case, it should be documented somewhere).

Or is this related to the value of standard_conforming_strings?

Thomas

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Thomas Kellerer (#5)
Re: \copy command: how to define a tab character as the delimiter

Thomas Kellerer <spam_eater@gmx.net> writes:

The main reason I asked, was that the manual actually claims that '\t' can be used ("The following special backslash sequences are recognized by COPY FROM")

\t is recognized in the copy data, not in the command's parameters.

regards, tom lane

#7Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Thomas Kellerer (#5)
Re: \copy command: how to define a tab character as the delimiter

On 03/09/2010 10:09 AM, Thomas Kellerer wrote:

Raymond O'Donnell wrote on 09.03.2010 18:39:

This is Postgres you're talking about - of course it's that easy! :-)

:)

The main reason I asked, was that the manual actually claims that '\t'
can be used ("The following special backslash sequences are recognized
by COPY FROM")

As this is part of the description for the COPY command, does this maybe
mean it is only valid for COPY but not for \copy?
if that is the case, it should be documented somewhere).

Or is this related to the value of standard_conforming_strings?

Thomas

From here:
http://www.postgresql.org/docs/8.4/interactive/app-psql.html
"The syntax of the command is similar to that of the SQL COPY command.
Note that, because of this, special parsing rules apply to the \copy
command. In particular, the variable substitution rules and backslash
escapes do not apply. "

--
Adrian Klaver
adrian.klaver@gmail.com