Re: Import: I need help

From: Guillaume Lelarge <guillaume(at)lelarge(dot)info>
To: Quan Zongliang <quanzongliang(at)gmail(dot)com>
Cc: pgadmin-hackers(at)postgresql(dot)org(dot)
Subject: Re: Import: I need help
Date: 2009-02-13 09:00:34
Message-ID: 499536B2.7060100@lelarge.info
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi,

Quan Zongliang a écrit :
> [...]
> I haven't any experience with libpq. So there are a lot of questions.
>
> When import to db using INSERT statement. Like this:
> res = PQexec(m_conn->connection(), "BEGIN");
> LOOP: res = PQexec(m_conn->connection(), "INSERT INTO ...");
> res = PQexec(m_conn->connection(), "COMMIT");
> If any INSERT statement failed in the middle, the whole transaction is aborted.
> In my plan, the end user can select a number of rows to commit their work.
> (Option: commit every xxx rows.)
> Is there a approach to ingnore error statement and leave current transaction
> in normal status?

No. If you have an error, the whole transaction is dead. You can deal
with this in two ways. The first one involves doing multiple
COMMIT;BEGIN; statements:

res = PQexec(m_conn->connection(), "BEGIN");
LOOP:
res = PQexec(m_conn->connection(), "INSERT INTO ...");
if more than x INSERTs
res = PQexec(m_conn->connection(), "COMMIT");
res = PQexec(m_conn->connection(), "BEGIN");
ENDLOOP
res = PQexec(m_conn->connection(), "COMMIT");

The second way is to use SAVEPOINT.

> [...]
> First, import function with INSERT statement will be implemented.
> The questions about COPY command will come soon. ^-^
>

I think you should take a look at pgloader:
http://pgfoundry.org/projects/pgloader/

It's written in Python but Dimitri had to deal with the same issues than
you. pgloader is able to understand which INSERT fails, and can put them
in a file. It can also use COPY statements.

--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Quan Zongliang 2009-02-13 09:06:51 Re: [pgadmin-support] about bit varying
Previous Message Dave Page 2009-02-13 08:55:00 Re: Import: I need help