Pdo\Pgsql::copyFromArray

(PHP 8 >= 8.4.0)

Pdo\Pgsql::copyFromArrayPHP の配列から、データをテーブルにコピーする

説明

public function Pdo\Pgsql::copyFromArray(
    string $tableName,
    array|Traversable $rows,
    string $separator = "\t",
    string $nullAs = "\\\\N",
    ?string $fields = null
): bool

rows 配列からデータをテーブル tableName にコピーします。その際、separator を フィールドのデリミタ、そして fields のリストを使います。

パラメータ

tableName
テーブル名を含む文字列
rows
各フィールドを separator で区切った文字列の数値添字配列(または Traversable
separator
rows 配列の各要素の中で フィールドを分割するためのデリミタ
nullAs
SQLの NULL 値をどのように扱うかを指定します
fields
挿入するフィールドの一覧

戻り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
8.5.0 rowsTraversable も 受け付けるようになりました。 それ以前は、array のみを受け付けていました。

例1 Pdo\Pgsql::copyFromArray() の例

rows の各要素が 1 つのレコードであり、 そのフィールドは separator(デフォルトはタブ)で連結されています。

<?php
$db = new Pdo\Pgsql('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->exec('CREATE TABLE fruits (id int, name text, qty int)');

$rows = [
    "1\tapple\t10",
    "2\tbanana\t20",
    "3\tcherry\t30",
];
$db->copyFromArray('fruits', $rows);

foreach ($db->query('SELECT * FROM fruits ORDER BY id') as $row) {
    echo "{$row['id']} {$row['name']} {$row['qty']}\n";
}
?>

上の例の出力は以下となります。

1 apple 10
2 banana 20
3 cherry 30

参考