PHPerKaigi 2024

pg_copy_to

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_copy_to Copy a table to an array

Descrição

pg_copy_to(
    PgSql\Connection $connection,
    string $table_name,
    string $separator = "\t",
    string $null_as = "\\\\N"
): array|false

pg_copy_to() copies a table to an array. It issues COPY TO SQL command internally to retrieve records.

Parâmetros

connection

Uma instância de PgSql\Connection.

table_name

Name of the table from which to copy the data into rows.

separator

The token that separates values for each field in each element of rows. Default is \t.

null_as

How SQL NULL values are represented in the rows. Default is \\N ("\\\\N").

Valor Retornado

An array with one element for each line of COPY data, ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.1.0 O parâmetro connection agora espera uma instância de PgSql\Connection; anteriormente, um resource era esperado.

Exemplos

Exemplo #1 pg_copy_to() example

<?php
$db
= pg_connect("dbname=publisher") or die("Could not connect");

$rows = pg_copy_to($db, $table_name);

pg_query($db, "DELETE FROM $table_name");

pg_copy_from($db, $table_name, $rows);
?>

Veja Também

add a note

User Contributed Notes 3 notes

up
0
John M
3 years ago
Worth noting here that just like the COPY TO statement in PostgreSQL, '$table_name' can include a list of columns or be a select query as well.
e.g.:
$rows = pg_copy_to($db,'schema."TableName" (column1, column2, ...)';
$rows = pg_copy_to($db,'(SELECT ...)');
up
0
setantae at submonkey dot net
21 years ago
"It issues COPY TO SQL command internally to insert records"

I suspect this statement is incorrect, or that s/insert/retrieve/ is appropriate.
up
-3
etiger13 at gmail dot com
14 years ago
You cannot specify the schema name in this command. You can change the search path for just one query by using the following code:

<?php
pg_query
($conn, "SET search_path TO myschema;");

$copy_to = pg_copy_to($conn, 'tablename');

pg_query("RESET search_path;");
?>
To Top