Thread: question about docs on copy command

question about docs on copy command

From
Platon Pronko
Date:
Hi!

I'm having a little trouble with docs of COPY command: https://www.postgresql.org/docs/11/sql-copy.html

Excerpt from synopsis:

> COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
>     TO { 'filename' | PROGRAM 'command' | STDOUT }
>     [ [ WITH ] ( option [, ...] ) ]
> 
> where option can be one of:
> 
>     FORMAT format_name

This led me to beleive that the following command should be valid:

copy (select 1) to stdout with format csv;

However, the error is shown:

> ERROR:  syntax error at or near "format"
> LINE 1: copy (select 1) to stdout with format csv;
>                                        ^

This command executes normally:

copy (select 1) to stdout with csv;

Am I missing something, or maybe the docs need a slight correction?

Best regards,
Platon Pronko



RE: question about docs on copy command

From
David Raymond
Date:
It also appears to be disliking the comma for including more than one option. So something's definitely up with that.
ButI can't tell you if it's a bug with the program or with the documentation, so hopefully someone else can chime in on
that.

(On 11.5 by the way)
mnr=> copy (select 1, 'With space', null) to stdout with null 'NuLL';
1       With space      NuLL
mnr=> copy (select 1, 'With space', null) to stdout with delimiter '|';
1|With space|\N
mnr=> copy (select 1, 'With space', null) to stdout with delimiter '|', null 'NuLL';
ERROR:  syntax error at or near ","
LINE 1: ..., 'With space', null) to stdout with delimiter '|', null 'Nu...
                                                             ^



-----Original Message-----
From: Platon Pronko <platon7pronko@gmail.com> 
Sent: Friday, September 6, 2019 3:47 AM
To: pgsql-novice@postgresql.org
Subject: question about docs on copy command

Hi!

I'm having a little trouble with docs of COPY command: https://www.postgresql.org/docs/11/sql-copy.html

Excerpt from synopsis:

> COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
>     TO { 'filename' | PROGRAM 'command' | STDOUT }
>     [ [ WITH ] ( option [, ...] ) ]
> 
> where option can be one of:
> 
>     FORMAT format_name

This led me to beleive that the following command should be valid:

copy (select 1) to stdout with format csv;

However, the error is shown:

> ERROR:  syntax error at or near "format"
> LINE 1: copy (select 1) to stdout with format csv;
>                                        ^

This command executes normally:

copy (select 1) to stdout with csv;

Am I missing something, or maybe the docs need a slight correction?

Best regards,
Platon Pronko



Re: question about docs on copy command

From
Tom Lane
Date:
Platon Pronko <platon7pronko@gmail.com> writes:
> I'm having a little trouble with docs of COPY command: https://www.postgresql.org/docs/11/sql-copy.html

> Excerpt from synopsis:

>> COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
>> TO { 'filename' | PROGRAM 'command' | STDOUT }
>> [ [ WITH ] ( option [, ...] ) ]
>>
>> where option can be one of:
>>
>> FORMAT format_name

> This led me to beleive that the following command should be valid:

> copy (select 1) to stdout with format csv;

You missed the parentheses.  This works:

regression=# copy (select 1) to stdout with (format csv);
1

It does require a bit of attention to tell the metacharacters (braces
and square brackets) from the literal punctuation :-(

> This command executes normally:
> copy (select 1) to stdout with csv;

IIRC, that's valid per the "old syntax" described near the end of the
page.  The new syntax uses parens.

            regards, tom lane



Re: question about docs on copy command

From
Platon Pronko
Date:
Indeed, my eyes completely ignored all the punctuation or pattern characters. Thank you!

Best regards,
Platon Pronko

On 2019-09-06 17:01, Tom Lane wrote:
> Platon Pronko <platon7pronko@gmail.com> writes:
>> I'm having a little trouble with docs of COPY command: https://www.postgresql.org/docs/11/sql-copy.html
> 
>> Excerpt from synopsis:
> 
>>> COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
>>> TO { 'filename' | PROGRAM 'command' | STDOUT }
>>> [ [ WITH ] ( option [, ...] ) ]
>>>
>>> where option can be one of:
>>>
>>> FORMAT format_name
> 
>> This led me to beleive that the following command should be valid:
> 
>> copy (select 1) to stdout with format csv;
> 
> You missed the parentheses.  This works:
> 
> regression=# copy (select 1) to stdout with (format csv);
> 1
> 
> It does require a bit of attention to tell the metacharacters (braces
> and square brackets) from the literal punctuation :-(
> 
>> This command executes normally:
>> copy (select 1) to stdout with csv;
> 
> IIRC, that's valid per the "old syntax" described near the end of the
> page.  The new syntax uses parens.
> 
>             regards, tom lane
>