Re: copy table from... - Mailing list pgsql-general

From John Gray
Subject Re: copy table from...
Date
Msg-id E13yVfk-0005Fz-00@harrar.beansindustry.co.uk
Whole thread Raw
In response to copy table from...  (Sandeep Joshi <sjoshi@Zambeel.com>)
List pgsql-general
> I am trying to copy data from an ascii file into the table;
> I get following error. can anybody explain why? solution if possible;
>  copy: line 1, pg_atoi: error in "tom": can't parse "tom "
>

Are you sure that "tom" isn't the first entry in the data file? If
you're using the backend copy command remember that a relative path to a
file may give you a file you don't expect!
 pg_atoi looks like an  ascii to integer conversion function .i.e. "tom
" can't be parsed as an int.

Note that copy just copies the fields in in order -so a single column in
your data file will be copied into film_id. (the sequence is only set as
a default value if nothing else is provided for film_id). Obviously the
contents of the single column won't parse.

Even if you swap the column order, the documentation for copy says that
it doesn't pay attention to rules and default values.

The easiest solution is to use a temporary table:

create table tmp_zuser (name char(10));
copy tmp_zuser from ...

 create sequence film_id start 1;
 create table zuser ( film_id int4 default NEXTVAL('film_id'), name
char(10));

insert into zuser (name) select name from tmp_zuser;
(the id value will be assigned at this stage)

drop table tmp_zuser;

Note that you could use "create temporary table" so that the table would
get dropped at the end of the session automatically.

Hopefully someone more knowledgable will correct me if I've got this all
wrong!

Regards

John


--
John Gray
Senior Technician
BEANS INDUSTRY (UK) Ltd
3 Brindley Place
Birmingham B1 2JB
Tel +44-121-698-8672
Fax +44-121-698-8624
mailto:jgray@beansindustry.co.uk
http://www.beansindustry.co.uk


pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: backend dies when a user defined type returns null
Next
From: Jason Davies
Date:
Subject: Getting default values from PostgreSQL