Обсуждение: bulk insert using COPY and PHP code

Поиск
Список
Период
Сортировка

bulk insert using COPY and PHP code

От
Babu R
Дата:
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

Re: bulk insert using COPY and PHP code

От
Pavel Stehule
Дата:
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

Re: bulk insert using COPY and PHP code

От
Babu R
Дата:
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:

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

Re: bulk insert using COPY and PHP code

От
Pavel Stehule
Дата:
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
>

Re: bulk insert using COPY and PHP code

От
Scott Marlowe
Дата:
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.