Re: Bulk inserts within a Perl script?

From: Steve Atkins <steve(at)blighty(dot)com>
To: pgsql general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Bulk inserts within a Perl script?
Date: 2006-04-18 23:14:03
Message-ID: E244C93F-9224-4C9D-8D4D-6884140A69DA@blighty.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


On Apr 18, 2006, at 4:03 PM, Kynn Jones wrote:

> I have a Perl script that is supposed to make a large number of
> inserts in a PostgreSQL database. Performing individual inserts
> with SQL's INSERT command is too slow, however, I can use a
> "COPY ... from stdin" approach that is fast enough. Basically, I
> fork a psql process (yes, I'm on unix) and have the parent write
> the new records into the child, as part of a COPY from stdin
> command. Admittedly, this is very convoluted, but it works.
>
> Well, it almost works. It did in my preliminary tests, but failed
> in the real run with the actual database because the owner of the
> tables that get modified by this COPY statement is a user for which
> the psql command requires a password ( i.e. this user exists solely
> for the purpose of owning the database in question; it does not
> have a UID, nor disk space assigned to it), and I don't know how to
> give this password programmatically.
>
> So I'm back at the drawing board. How can I make fast bulk inserts
> into a PostgreSQL database from within a Perl script?
>

Assuming you're using DBI, perldoc DBD::Pg will be enlightening.

Check the pg_putline and pg_endcopy functions.

Cheers,
Steve

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2006-04-18 23:14:57 Re: Bulk inserts within a Perl script?
Previous Message Kynn Jones 2006-04-18 23:03:46 Bulk inserts within a Perl script?