Re: COPY using Hibernate

From: Maciek Sakrejda <msakrejda(at)truviso(dot)com>
To: Craig Ringer <craig(at)postnewspapers(dot)com(dot)au>
Cc: Vaibhav Patil <infovaibhav(at)yahoo(dot)com>, "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: COPY using Hibernate
Date: 2010-01-15 16:42:28
Message-ID: 895e58dd1001150842g6c9784c8r9bf78f5a7ce6f033@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

The driver supports COPY as of 8.4-701. I finally (after much too long
a delay; I apologize again) made good on my promise to clean up Kalle
Hallivuori's patch with Truviso's internal fixes, and worked with Kris
to get it accepted last spring. The final version came out in July.

It looks like it's not there in the main documentation, but it *is* in
the javadoc. PGConection.getCopyAPI() is the entry point.
---
Maciek Sakrejda | Software Engineer | Truviso

1065 E. Hillsdale Blvd., Suite 230
Foster City, CA 94404
(650) 242-3500 Main
(650) 242-3501 F
msakrejda(at)truviso(dot)com
www.truviso.com

On Fri, Jan 15, 2010 at 8:31 AM, Craig Ringer
<craig(at)postnewspapers(dot)com(dot)au> wrote:
> Vaibhav Patil wrote:
>
>> The other way I am trying is the pg/plsql stored procedure. As per the
>> requirement, I have to insert around a million integers in a table
>> having just one column. I am not aware of how to use "COPY FROM STDIN"
>> using pg/plsql. I'll pass these integers as array to stored procedure. I
>> want to avoid dependency of file, otherwise it could have been done
>> easily using "COPY FROM file". Looking for more information on internet
>> to solve the issue. If anybody aware of the way, please help me.
>
> It's a real pity the JDBC driver doesn't support the COPY protocol so
> you could just do this via PGConnection. There have been patches around
> for ages ... though I presume there are good reasons why they haven't
> been merged.
>
> Do check to make sure that the stored proc approach is actually faster
> than just doing batched multi-valued INSERTs. Open a transaction, then
> prepare a statement like this:
>
> INSERT INTO sometable VALUES (?),(?),(?),(?),(?);
>
> (but with say 20 parameters - you'll need to play around and see how
> many is optimal), then add a series of invocations of the prepared
> statement to a JDBC batch insert/update and execute it.
>
> I wouldn't be surprised if that was quite a bit faster than doing it
> with an array and PL/PgSQL.
>
> --
> Craig Ringer
>
> --
> Sent via pgsql-jdbc mailing list (pgsql-jdbc(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-jdbc
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message John T. Dow 2010-01-15 23:06:49 Re: refreshRow is slow
Previous Message Craig Ringer 2010-01-15 16:31:39 Re: COPY using Hibernate