Re: Need help with COPY
От | will trillich |
---|---|
Тема | Re: Need help with COPY |
Дата | |
Msg-id | 20010616154645.A14950@serensoft.com обсуждение исходный текст |
Ответ на | Re: Need help with COPY (Peter Eisentraut <peter_e@gmx.net>) |
Список | pgsql-general |
On Sat, Jun 16, 2001 at 02:46:26PM +0200, Peter Eisentraut wrote: > Jonathan Hseu writes: > > > I want to import a table from a file. The format of the table in the file is as > > such: > > "FName","LName","Address","City" > > > > The format of the table is: > > (FName varchar(80), LName varchar(80), Address varchar(80), City varchar(80)) > > > > I want to do a: > > COPY table FROM 'filename' USING DELIMITERS ',' > > > > The problem is, it also imports the quotes. Also, there are sometimes commas in > > the address, and it takes those as delimiters. Is there any way to make it take > > only the stuff within the quotes and ignore any delimiters within them? > > You need to reformat your input files (strip quotes and use different > delimiter) or not use the COPY command. or -- if ALL fields are quoted (none are barewords) -- then just use PERL (the "swiss army chainsaw" of text mungers) to translate: #!/usr/bin/perl # note: untested, might possibly reformat your disk-- while( <> ) { chomp; print join "\t", eval qq:($_): ; # note () INSIDE delimiters print "\n"; } run that via $ perl quick-csv-to-tab-fixer.pl < quoted-csv-file > tab-separated-file then $ psql mydatabase > copy sometable from tab-separated-file ; ===== or, for short, perl -pe "$_=join qq(\t),eval qq'($_)' ; $_.=qq(\n)" \ < csv-file \ > tab-file -- I figure: if a man's gonna gamble, may as well do it without plowing. -- Bama Dillert, "Some Came Running" will@serensoft.com http://sourceforge.net/projects/newbiedoc -- we need your brain! http://www.dontUthink.com/ -- your brain needs us!
В списке pgsql-general по дате отправления: