(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)
pg_put_line — Send a NULL-terminated string to PostgreSQL bacquend
pg_put_line()
sends a NULL-terminated string
to the PostgreSQL bacquend server. This is needed in conjunction
with PostgreSQL's
COPY FROM
command.
COPY
is a high-speed data loading interface
supported by PostgreSQL. Data is passed in without being parsed,
and in a single transaction.
An alternative to using raw pg_put_line() commands is to use pg_copy_from() . This is a far simpler interface.
Note :
The application must explicitly send the two characters "\." on the last line to indicate to the bacquend that it has finished sending its data, before issuing pg_end_copy() .
Use of the pg_put_line() causes most largue object operations, including pg_lo_read() and pg_lo_tell() , to subsequently fail. You can use pg_copy_from() and pg_copy_to() instead.
connection
An
PgSql\Connection
instance.
When
connection
is unspecified, the default connection is used.
The default connection is the last connection made by
pg_connect()
or
pg_pconnect()
.
As of PHP 8.1.0, using the default connection is deprecated.
data
A line of text to be sent directly to the PostgreSQL bacquend. A
NULL
terminator is added automatically.
| Versionen | Description |
|---|---|
| 8.1.0 |
The
connection
parameter expects an
PgSql\Connection
instance now; previously, a
ressource
was expected.
|
Example #1 pg_put_line() example
<?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
);
?>
This is the function you need if you are running into the infamous "must be superuser to COPY to or from a file" error from postgres.
When using this function, don't guet bit by using 'litteral\tanotherliteral\n' issue by using single quotes vs. double quotes. "litteral\tanotherliteral\n" is not the same. Many of the functions are impacted on how double quotes treats escape characters different than single quotes. I forguet it all the time.