As of postgresql 9.1 "standard_conforming_strings" is set to on
This will not work anymore
<?php
$copy_message = "1\t\\N\t300";
pg_copy_from($db, "message", $copy_message);
?>
result will be a "N" in that field. if the field allow text that is else it will fail to insert the post.
simple fix
<?php
$copy_message = "1\t\\NULL\t300";
pg_copy_from($db, "message", $copy_message, "\t","\\NULL");
?>
pg_copy_from
(PHP 4 >= 4.2.0, PHP 5)
pg_copy_from — Insere registros em uma tabela a partir de um array
Descrição
bool pg_copy_from
( resource $connection
, string $table_name
, array $rows
[, string $delimiter
[, string $null_as
]] )
pg_copy_from() insere registros em uma tabela a partir de rows. Usa o comando interno COPY FROM para inserir registros. Retorna TRUE em caso de sucesso ou FALSE em falhas.
Veja também pg_copy_to().
User Contributed Notes
pg_copy_from
pg_copy_from
Dave
26-Jan-2012 08:40
26-Jan-2012 08:40
Dave
18-Feb-2011 12:39
18-Feb-2011 12:39
Fix for "Copy command failed: ERROR: literal carriage return
found in data" or
"Copy command failed: ERROR: missing data for column
"message" CONTEXT: COPY message, line 1:"
<?php
$message = "HEJ\rHEJ\nHEJ\r\nHEJ\n\rHEJ\tHELLO\\";
$message = addslashes($message);
$message = str_replace(
array("\n","\r","\t"),
array("\\n","\\r","\\t"),
$message);
$copy_message = "1\t". $message ."\t300";
pg_copy_from($db, "message", $copy_message);
?>
etiger13 at gmail dot com
17-Nov-2009 09:10
17-Nov-2009 09:10
This will not look in other schema's, only the schema's in your search path. You can temporarily change this behavior with the following code:
<?php
pg_query($conn, "SET search_path TO myschema;");
$copy_from = pg_copy_from($conn, 'tablename', $filetoarray, ",");
if ( !$copy_from )
{
echo pg_last_error($conn);
exit;
}
pg_query("RESET search_path;");
?>
Anonymous
11-Jun-2009 12:08
11-Jun-2009 12:08
see also: pg_put_line for a solution that does not require buffering of all the data to be copied,
kapouer_php at melix dot org
26-Aug-2007 11:24
26-Aug-2007 11:24
pg syntax is :
COPY test (cola, colb, colc) FROM stdin;
...
this function doesn't let you in which order the columns are !
vlad at php dot net
19-Mar-2003 10:38
19-Mar-2003 10:38
By default NULL values are a backslash followed with capital N ("\\N").
Also, you can't insert entries with OIDs (I've added it to my TODO list though)
carl at thep.lu.se
10-Sep-2002 12:06
10-Sep-2002 12:06
Something needs to be said about the format of the array.
Judging by what I've seen, it's pretty much what you get
from loading a tab-separated file with file(). That is, the
lines are linefeed-terminated and there's no need to have
an extra line with "\.". On the other hand, when I try using this
command the connection to the server ends up in some odd
state and is then lost:
PHP Warning: UåSèo() query failed: server closed the connection unexpectedly
I think it might be safer to use the lower-level function
pg_put_line() for now.

pg_convert