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.
(PHP 4 >= 4.0.3, PHP 5)
pg_put_line — Send a NULL-terminated string to PostgreSQL backend
pg_put_line() sends a NULL-terminated string to the PostgreSQL backend 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.
Замечание: The application must explicitly send the two characters "\." on the last line to indicate to the backend that it has finished sending its data, before issuing pg_end_copy().
A line of text to be sent directly to the PostgreSQL backend. A NULL terminator is added automatically.
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Пример #1 pg_put_line() example
$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_end_copy() - Sync with PostgreSQL backend