CakeFest 2024: The Official CakePHP Conference

pg_copy_to

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

pg_copy_toKopiert eine Tabelle in ein Array

Beschreibung

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

pg_copy_to() kopiert eine Tabelle in ein Array. Intern wird das SQL-Kommando COPY TO aufgerufen, um die Datensätze einzufügen.

Parameter-Liste

connection

Eine PgSql\Connection-Instanz.

table_name

Der Name der Tabelle, aus der die Daten in das Array rows kopiert werden.

separator

Der Feldbegrenzer, mit dem die Werte in den Elementen von rows separiert werden. Der Vorgabewert ist \t.

null_as

Bestimmt, wie SQL NULL-Werte in rows dargestellt werden. Der Standardwert ist \\N ("\\\\N").

Rückgabewerte

Die Funktion gibt ein array zurück, in dem jedes Element eine Zeile der mit COPY erzeugten Daten enthält. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.1.0 Der Parameter connection erwartet nun eine PgSql\Connection-Instanz; vorher wurde eine Ressource erwartet.

Beispiele

Beispiel #1 pg_copy_to()-Beispiel

<?php
$db
= pg_connect("dbname=publisher") or die("Konnte keine Verbindung aufbauen");

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

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

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

Siehe auch

  • pg_copy_from() - Fügt Datensätze aus einem Array in eine Tabelle ein

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