Обсуждение: What am I doing wrong with this comma-delimited copy?
Welcome to psql 8.1.8, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
james=> \pset fieldsep ,
Field separator is ",".
james=> \copy transactions from bar
\.
ERROR: value too long for type character(14)
CONTEXT: COPY transactions, line 1, column symbol: "Cash,0,0,Cash Adjustment,4/2/2007,,,0.87,0,0, ,BALANCE-SWP
T1TO T2,16,,Financial"
psql appears to be treating the entire input line as one tuple,
instead of seeing the fieldsep value as a field delimiter.
Also, one issue I can see coming is the date format. Is there
a way I can read M-D-Y (or M/D/Y) format dates and store them?
My default postgresql date format is Y-M-D. I'd be happy to
retain Y-M-D on display, I just don't want to have to involve
a script to massage the input dates to Y-M-D format.
Thank you!
Jim
James Long wrote: > Welcome to psql 8.1.8, the PostgreSQL interactive terminal. > > Type: \copyright for distribution terms > \h for help with SQL commands > \? for help with psql commands > \g or terminate with semicolon to execute query > \q to quit > > james=> \pset fieldsep , > Field separator is ",". > james=> \copy transactions from bar > \. > ERROR: value too long for type character(14) > CONTEXT: COPY transactions, line 1, column symbol: "Cash,0,0,Cash Adjustment,4/2/2007,,,0.87,0,0, ,BALANCE-SWPT1 TO T2,16,,Financial" > > > psql appears to be treating the entire input line as one tuple, > instead of seeing the fieldsep value as a field delimiter. > > See here: http://www.postgresql.org/docs/8.2/static/sql-copy.html fieldsep does not affect the COPY command.
James Long <pgsql-novice@museum.rain.com> writes:
> james=> \pset fieldsep ,
> Field separator is ",".
> james=> \copy transactions from bar
> psql appears to be treating the entire input line as one tuple,
> instead of seeing the fieldsep value as a field delimiter.
You're confusing psql's output field separator with what COPY will use.
IIRC you need a "delimiter ','" clause on the copy command.
> Also, one issue I can see coming is the date format. Is there
> a way I can read M-D-Y (or M/D/Y) format dates and store them?
See datestyle.
regards, tom lane