Documentation problem: The syntax for "\copy" is just wrong

Started by David Tonhoferalmost 12 years ago3 messagesbugs
Jump to latest
#1David Tonhofer
bughunt@gluino.name

At

http://www.postgresql.org/docs/9.3/static/app-psql.html#APP-PSQL-META-COMMANDS-COPY

the syntax for the \copy command is given as follows:

\copy { table [ ( column_list ) ] | ( query ) } { from | to } {
'filename' | program 'command' | stdin | stdout | pstdin | pstdout } [ [
with ] ( option [, ...] ) ]

In particular, we read:

"The syntax of the command is similar to that of the SQL COPY command,
and option must indicate one of the options of the SQL COPY command."

Well, it turns out that NOPE, THIS AIN'T TRUE.

According to the description as given, the following should work.

\copy table_to_fill from 'foofile.csv' with format csv, header true,
delimiter ',';

In particular, options are separated by "," and options use the same
syntax as for COPY, which according to
http://www.postgresql.org/docs/9.3/static/sql-copy.html is:

FORMAT format_name
OIDS [ boolean ]
FREEZE [ boolean ]
DELIMITER 'delimiter_character'
NULL 'null_string'
HEADER [ boolean ]
QUOTE 'quote_character'
ESCAPE 'escape_character'
FORCE_QUOTE { ( column_name [, ...] ) | * }
FORCE_NOT_NULL ( column_name [, ...] )
ENCODING 'encoding_name'

Experiments however show \copy expects something else (the option's
values basically?), a not separated by commas:

\copy table_to_fill from 'foofile.csv' with csv header delimiter ',';

Regards,

-- David

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: David Tonhofer (#1)
Re: Documentation problem: The syntax for "\copy" is just wrong

David Tonhofer <bughunt@gluino.name> writes:

the syntax for the \copy command is given as follows:

\copy { table [ ( column_list ) ] | ( query ) } { from | to } {
'filename' | program 'command' | stdin | stdout | pstdin | pstdout } [ [
with ] ( option [, ...] ) ]

Yeah ...

According to the description as given, the following should work.
\copy table_to_fill from 'foofile.csv' with format csv, header true,
delimiter ',';

Not sure how you get from the first to the second. The syntax clearly
shows parens around the option list as required.

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#3Pedro Gimeno
pgsql-004@personal.formauri.es
In reply to: David Tonhofer (#1)
Re: Documentation problem: The syntax for "\copy" is just wrong

David Tonhofer wrote, On 2014-07-14 20:50:

At

http://www.postgresql.org/docs/9.3/static/app-psql.html#APP-PSQL-META-COMMANDS-COPY

the syntax for the \copy command is given as follows:

\copy { table [ ( column_list ) ] | ( query ) } { from | to } {
'filename' | program 'command' | stdin | stdout | pstdin | pstdout } [ [
with ] ( option [, ...] ) ]

[...]

According to the description as given, the following should work.

\copy table_to_fill from 'foofile.csv' with format csv, header true,
delimiter ',';

This seems to be frequently reported. Can the parentheses be made more
prominent, e.g. by boldfacing them or putting them in quotes? They are
fairly easy to miss, because of the metacharacters [ ] { } interspersed
and the use of different conventions in different grammar specifications.

Alternatively, perhaps mention the parentheses explicitly in the text?

To the OP, this should work:

\copy table_to_fill from 'foofile.csv' with (format csv, header true,
delimiter ',');

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs