Re: Need help doing a CSV import

From: David Fetter <david(at)fetter(dot)org>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Need help doing a CSV import
Date: 2010-07-14 16:26:39
Message-ID: 20100714162639.GB18638@fetter.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, Jul 14, 2010 at 01:20:25PM +0000, Tim Landscheidt wrote:
> Craig Ringer <craig(at)postnewspapers(dot)com(dot)au> wrote:
>
> >> I am in the process of moving a FoxPro based system to PostgreSQL.
>
> >> We have several tables that have memo fields which contain carriage
> >> returns and line feeds that I need to preserve. I thought if I converted
> >> these into the appropriate \r and \n codes that they would be imported as
> >> carriage returns and line feeds, but instead they are stored in the
> >> database as \r and \n.
>
> > PostgreSQL doesn't process escapes in CSV import mode.
>
> > You can reformat the data into the non-csv COPY format,
> > which WILL process escapes. Or you can post-process it after
> > import to expand them. Unfortunately PostgreSQL doesn't
> > offer an option to process escapes when "CSV" mode COPY is
> > requested.
>
> > I posted a little Python script that reads CSV data and
> > spits out COPY-friendly output a few days ago. It should be
> > trivially adaptable to your needs, you'd just need to change
> > the input dialect options. See the archives for the script.
>
> Another option is a small Perl script or something similar
> that connects to both the FoxPro and the PostgreSQL database
> and transfers the data with parameterized "INSERT". The ad-
> vantage of this is that you have tight control of charsets,
> date formats, EOL conventions & Co. and do not have to won-
> der whether this and that file is in this and that stage of
> the conversion process, the disadvantage is obviously that
> you lose any speed benefit of bulk "COPY".

You can do your transformations and hand the stream off to the COPY
interface. See the pg_putcopydata() section of the DBD::Pg manual for
examples. :)

Cheers,
David.
--
David Fetter <david(at)fetter(dot)org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david(dot)fetter(at)gmail(dot)com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message David Fetter 2010-07-14 16:34:53 Re: Planner features, discussion
Previous Message easyCity Team 2010-07-14 16:18:03 Database recovery after dropdb