X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (neptune.hub.org [200.46.204.2]) by svr1.postgresql.org (Postfix) with ESMTP id E5A90D1D543 for ; Sat, 10 Jan 2004 18:29:11 +0000 (GMT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024) with ESMTP id 31066-09 for ; Sat, 10 Jan 2004 14:28:41 -0400 (AST) Received: from web20804.mail.yahoo.com (web20804.mail.yahoo.com [216.136.226.193]) by svr1.postgresql.org (Postfix) with SMTP id 8C834D1B464 for ; Sat, 10 Jan 2004 14:28:39 -0400 (AST) Message-ID: <20040110182838.44707.qmail@web20804.mail.yahoo.com> Received: from [68.107.248.174] by web20804.mail.yahoo.com via HTTP; Sat, 10 Jan 2004 10:28:38 PST Date: Sat, 10 Jan 2004 10:28:38 -0800 (PST) From: Jeff Eckermann Subject: Re: data loading To: azwa@nc.com.my, pgsql-sql@postgresql.org In-Reply-To: <200401092004.48865.dev@archonet.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Virus-Scanned: by amavisd-new at postgresql.org X-Archive-Number: 200401/81 X-Sequence-Number: 16474 --- Richard Huxton wrote: > On Friday 09 January 2004 02:13, azwa@nc.com.my > wrote: > > Hi, > > > > > > i try to load data from flat file (comma > delimiter format) into > > temporary table . i use COPY command as below: > > > > dwnc=# copy biosadm.custdo_temp > > dwnc-# from > '/home/bios/customer_data/CustomerDO_new.CSV' > > dwnc-# WITH DELIMITER ',' ; > > > > ERROR: copy: line 141, Extra data after last > expected column > > Does line 141 (or nearby) have a comma somewhere in > its data? That would fool > the COPY into mis-counting the columns. See the COPY > entry in the SQL Command > Reference chapter of the manuals - you'll want to > escape any commas with a > backslash: > \, CSV deals with embedded commas by quoting the data field that contains it. Applications that are aware of this will know to ignore commas within quoted strings. COPY is not smart enough to figure this out (nor smart enough to strip off any quotes, which will be imported as data). If you know for a fact that your data contains no quotes, then you can get away with the "with delimiters ','" trick. Otherwise, you will need to preprocess your data through something that will parse the CSV format, e.g. some Perl module. Note that hand rolled solutions usually underestimate the complexity of dealing with CSV data, and why bother when others have already solved the problem for you. __________________________________ Do you Yahoo!? Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes http://hotjobs.sweepstakes.yahoo.com/signingbonus