On the COPY's atomicity -- looking for a definitive answer from a core
developer, not a user's guess, please.

Suppose I COPY a huge amount of data, e.g. 100 records.

My 99 records are fine for the target, and the 100-th is not -- it
comes with a wrong record format or a target constraint violation.

The whole thing is aborted then, and the good 99 records are not
making it into the target table.

My question is: Where are these 99 records have been living, on the
database server, while the 100-th one hasn't come yet, and the need to
throw the previous data accumulation away has not come yet?

There have to be some limits to the space and/or counts taken by the
new, uncommitted, data, while the COPY operation is still in progress.
What are they?

Say, I am COPYing 100 TB of data and the bad records are close to the
end of the feed -- how will this all error out?

Thanks,

-- Alex



On Mon, Aug 25, 2014 at 11:48 AM, Jeff Janes <jeff.ja...@gmail.com> wrote:

> On Fri, Aug 22, 2014 at 1:49 PM, Emi Lu <em...@encs.concordia.ca> wrote:
>
>> Hello,
>>
>>
>> Trying to insert into one table with 1 million records through java JDBC
>> into psql8.3. May I know (1) or (2) is better please?
>>
>> (1) set autocommit(true)
>> (2) set autocommit(false)
>>      commit every n records (e.g., 100, 500, 1000, etc)
>>
>
> In general it is better to use COPY (however JDBC for 8.3. exposes that),
> as that is designed specifically for bulk loading.
>
> Then it doesn't matter whether autocommit is on or off, because the COPY
> is a single statement.
>
> Cheers,
>
> Jeff
>

Reply via email to