Обсуждение: bulk insert using COPY and PHP code
Hello, Am exploring a way for bulk insert using \COPY with the CSV format data using PHP code. Is there any way to achieve this? Thanks, - Babu |
2010/7/2 Babu R <babu_4blog@yahoo.com> > > Hello, > > Am exploring a way for bulk insert using \COPY with the CSV format data using PHP code. Is there any way to achieve this? > > Thanks, > - Babu > hello look on http://php.net/manual/en/function.pg-put-line.php <?php $conn = pg_pconnect("dbname=foo"); pg_query($conn, "create table bar (a int4, b char(16), d float8)"); pg_query($conn, "copy bar from stdin"); pg_put_line($conn, "3\thello world\t4.5\n"); pg_put_line($conn, "4\tgoodbye world\t7.11\n"); pg_put_line($conn, "\\.\n"); pg_end_copy($conn); ?> Regards Pavel Stehule
Hi Pavel, Thanks. The situation is, I have the DB class which will return the connection object that is created using the PDO class. And am using that object to perform the db operations. ie: $DB->prepare("") Further I have the data in a CSV file which has to be inserted into the table. Here is the command that I have used to import that data: $DB->exec("\COPY table1 FROM data.csv WITH DELIMITERS ','"); And this dosen't work, it throws an error "error near "\" char 1 along with the command But the same command works fine on the psql prompt. Thanks again, - Babu --- On Fri, 7/2/10, Pavel Stehule <pavel.stehule@gmail.com> wrote:
|
2010/7/2 Babu R <babu_4blog@yahoo.com> > > Hi Pavel, > > Thanks. > > The situation is, I have the DB class which will return the connection object that is created using the PDO class. Andam using that object to perform the db operations. ie: $DB->prepare("") > > Further I have the data in a CSV file which has to be inserted into the table. > > Here is the command that I have used to import that data: > > $DB->exec("\COPY table1 FROM data.csv WITH DELIMITERS ','"); you cannot use \copy - this command is available only in psql. use just copy ... pavel > > And this dosen't work, it throws an error "error near "\" char 1 along with the command > > But the same command works fine on the psql prompt. > > Thanks again, > - Babu > > --- On Fri, 7/2/10, Pavel Stehule <pavel.stehule@gmail.com> wrote: > > From: Pavel Stehule <pavel.stehule@gmail.com> > Subject: Re: [GENERAL] bulk insert using COPY and PHP code > To: "Babu R" <babu_4blog@yahoo.com> > Cc: pgsql-general@postgresql.org > Date: Friday, July 2, 2010, 4:22 PM > > 2010/7/2 Babu R <babu_4blog@yahoo.com> > > > > Hello, > > > > Am exploring a way for bulk insert using \COPY with the CSV format data using PHP code. Is there any way to achieve this? > > > > Thanks, > > - Babu > > > hello > > look on http://php.net/manual/en/function.pg-put-line.php > > > <?php > $conn = pg_pconnect("dbname=foo"); > pg_query($conn, "create table bar (a int4, b char(16), d float8)"); > pg_query($conn, "copy bar from stdin"); > pg_put_line($conn, "3\thello world\t4.5\n"); > pg_put_line($conn, "4\tgoodbye world\t7.11\n"); > pg_put_line($conn, "\\.\n"); > pg_end_copy($conn); > ?> > > Regards > > Pavel Stehule >
On Fri, Jul 2, 2010 at 1:28 PM, Babu R <babu_4blog@yahoo.com> wrote: > > Hi Pavel, > > Thanks. > > The situation is, I have the DB class which will return the connection object that is created using the PDO class. Andam using that object to perform the db operations. ie: $DB->prepare("") > > Further I have the data in a CSV file which has to be inserted into the table. > > Here is the command that I have used to import that data: > > $DB->exec("\COPY table1 FROM data.csv WITH DELIMITERS ','"); As mentioned earlier just use copy, also look into using copy from stdin and then just feeding the lines to pgsql through php instead of having pgsql get it from a system file. This way the php script and the db don't have to be on the same machine.