On Wed, 21 Dec 2005, Michael Fuhr wrote: > Date: Wed, 21 Dec 2005 13:23:24 -0700 > From: Michael Fuhr <[EMAIL PROTECTED]> > 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)
---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org