Thread: Using SELECT inside a COPY transaction with PHP

Using SELECT inside a COPY transaction with PHP

From
Robert Fitzpatrick
Date:
I tried posting this to PHP-DB list, but no answers since yesterday. I'm
thinking it is not possible, but just trying to confirm. I am using
pg_exec($dbh, "COPY sometable FROM stdin USING DELIMITERS"). Once this
the connectino is made and this line has been issued, my script begins
analyzing each line of the CSV file and needs to do a SELECT statement
using some of the fields in the line to find other related data before
calling pg_end_copy($dbh), which syncs the data. Can another pg_exec
call be made for a SELECT statement before the COPY is over? My script
seems to hang at the point of the first SELECT.

--
Robert


Re: Using SELECT inside a COPY transaction with PHP

From
Tom Lane
Date:
Robert Fitzpatrick <robert@webtent.com> writes:
> I tried posting this to PHP-DB list, but no answers since yesterday. I'm
> thinking it is not possible, but just trying to confirm. I am using
> pg_exec($dbh, "COPY sometable FROM stdin USING DELIMITERS"). Once this
> the connectino is made and this line has been issued, my script begins
> analyzing each line of the CSV file and needs to do a SELECT statement
> using some of the fields in the line to find other related data before
> calling pg_end_copy($dbh), which syncs the data. Can another pg_exec
> call be made for a SELECT statement before the COPY is over? My script
> seems to hang at the point of the first SELECT.

You'd have to open a second database connection to issue the SELECT on.
Your first one is tied up doing the COPY (the connection protocol is
not multi-threaded or anything like that).

            regards, tom lane