Re: COPY command - CSV files - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: COPY command - CSV files
Date
Msg-id 200405051648.i45GmmV14560@candle.pha.pa.us
Whole thread Raw
In response to COPY command - CSV files  (Umberto Zappi <uzappi@inwind.it>)
List pgsql-hackers
Umberto Zappi wrote:
> I wish modify COPY command for support of CSV files (dump/load files in
> CSV format).
> I think this option is very important from import data from spreedsheet
> as OpenOffice/calc or M$/excel.
> I have found this task in TODO list, also.
> 
> I've begin my work, modify COPY syntax in:
> 
> COPY tablename [ ( column [, ...] ) ]
>     FROM { 'filename' | STDIN }
>     [ [ WITH ]
>           [ BINARY ]
>           [ OIDS ]
>           [ DELIMITER [ AS ] 'delimiter' ]
>           [ [ OPTIONALLY ] ENCLOSED [ BY ] 'delimiter1' [ AND
> 'delimiter2' ] ]
>           [ NULL [ AS ] 'null string' ] ]
> 
> COPY tablename [ ( column [, ...] ) ]
>     TO { 'filename' | STDOUT }
>     [ [ WITH ]
>           [ BINARY ]
>           [ OIDS ]
>           [ DELIMITER [ AS ] 'delimiter' ]
>           [ ENCLOSED [ BY ] 'delimiter1' [ AND 'delimiter2' ] ]
>           [ NULL [ AS ] 'null string' ] ]
> 
> Syntax is like to  control-file of Oracle's utility sql*load.
> Enclosed define the first and second  delimiters (if are different)
> which surround each field.
> The delimiters may be optionally if keyword exists.

I guess you didn't notice that the TODO item has a dash next it, meaning
it is done and will be in 7.5.  We didn't use Oracle's syntax, but we do
allow for the escape character in the quotes to be specified if different:COPY tablename [ ( column [, ...] ) ] ]' ]
FROM{ 'filename' | STDIN }elimiter' ] ...] ]    [ [ WITH ] S ] AS ] 'null string' ]' ]          [ BINARY ]  [ AS ]
'delimiter'] ...] ]          [ OIDS ] AS ] 'null string' ]' ]          [ DELIMITER [ AS ] 'delimiter' ] ...] ]
[NULL [ AS ] 'null string' ]' ]          [ CSV [ QUOTE [ AS ] 'quote' ] , ...] ]                [ ESCAPE [ AS ]
'escape']                [ FORCE NOT NULL column [, ...] ]    TO { 'filename' | STDOUT }delimiter' ]
 
COPY tablename [ ( column [, ...] ) ] ]' ]    TO { 'filename' | STDOUT }delimiter' ]    [ [ WITH ] S ] AS ] 'null
string']' ]          [ BINARY ]R [ AS ] 'delimiter' ]          [ OIDS ] AS ] 'null string' ]' ]          [ DELIMITER [
AS] 'delimiter' ]          [ NULL [ AS ] 'null string' ]' ]          [ CSV [ QUOTE [ AS ] 'quote' ]                [
ESCAPE[ AS ] 'escape' ]
 

One interesting idea we had was for ,, to be null, and ,"", to be a
zero-length string.  You can control that with FORCE NOT NULL,
meaning ,, is a zero-length string too.

To get the full details, see the current docs on the developers web
page.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


pgsql-hackers by date:

Previous
From: Robert Treat
Date:
Subject: Re: ALTER TABLE TODO items
Next
From: Bruce Momjian
Date:
Subject: Re: ALTER TABLE TODO items