Re: where is the output - Mailing list pgsql-hackers

From ohp@pyrenet.fr
Subject Re: where is the output
Date
Msg-id Pine.UW2.4.53.0512231415550.10592@sun.pyrenet
Whole thread Raw
In response to Re: where is the output  (Michael Fuhr <mike@fuhr.org>)
Responses Re: where is the output
List pgsql-hackers
On Wed, 21 Dec 2005, Michael Fuhr wrote:

> Date: Wed, 21 Dec 2005 13:23:24 -0700
> From: Michael Fuhr <mike@fuhr.org>
> To: ohp@pyrenet.fr
> Cc: pgsql-hackers list <pgsql-hackers@postgresql.org>
> Subject: Re: [HACKERS] where is the output
>
> On Wed, Dec 21, 2005 at 07:16:28PM +0100, ohp@pyrenet.fr wrote:
> > Not sure it's the right group, but I've spent the afternoon googling and
> > trying on this.
> >
> > In PHP (Apache Module)
>
> pgsql-php might be more appropriate, or possibly a PHP mailing list.
Sure!
But I'd still like to know in that case (the same goes for C I guess)
where stdout is.
Why isn't it connected by default to the input of whatever connected by
dbconnect?
>
> > I try pg_exec("COPY blah TO STDOUT WITH blah");
> > It runs  for ever...
> >
> > How can I get the output of COPY in PHP?
>
> At the libpq layer you'd use PQgetCopyData(); the only place I see
> a call to that function in the PHP 5.1.1 source code is in the
> pg_copy_to() function, which is for copying a table into an array.
>
> > Copy_from is not an option because the goal is to get a CSV file.
> > Writing and re-reading a file doesn't seem to be an option either because
> > of safe_mode.
>
> Could you use pg_copy_to() to read the table into an array and write
> each row of the array as CSV?  I'm not sure if the following is the
> best way or even entirely correct, but it appears to work in PHP 5.1.1,
> even with safe_mode enabled:
>
>   $rows = pg_copy_to($conn, "tablename");
>   $fh = fopen("php://output", "w");
>   foreach ($rows as $row) {
>     fputcsv($fh, explode("\t", rtrim($row)));
>   }
>   fclose($fh);
>
> According to the PHP documentation fputcsv() is new as of 5.1.0RC1;
> for earlier versions you could probably find a module to generate
> CSV output.
>
>
Thanks for the tip.  I found a function that does it!
-- 
Olivier PRENANT                    Tel: +33-5-61-50-97-00 (Work)
15, Chemin des Monges                +33-5-61-50-97-01 (Fax)
31190 AUTERIVE                       +33-6-07-63-80-64 (GSM)
FRANCE                          Email: ohp@pyrenet.fr
------------------------------------------------------------------------------
Make your life a dream, make your dream a reality. (St Exupery)


pgsql-hackers by date:

Previous
From: Simon Riggs
Date:
Subject: Re: [Bizgres-general] WAL bypass for INSERT, UPDATE and
Next
From: "Jonah H. Harris"
Date:
Subject: Re: Oracle PL/SQL Anonymous block equivalent in postgres