« Pdo\Pgsql
Pdo\Pgsql::copyFromFile »

Pdo\Pgsql::copyFromArray

(PHP 8 >= 8.4.0)

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

説明

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 rows は Traversable も 受け付けるようになりました。 それ以前は、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

参考

関連キーワード:
Pgsql   テーブル   rows   コピー   copyFromArray   separator   tableName   Traversable   fields   fruits   copyFromFile   nullAs   デリミタ   数値   添字   分割   挿入   成功   履歴   レコード   タブ   連結   pgsql   dbname   host
関連する関数・ページ:
pdo-pgsql.copyfromfile   pdo-pgsql.copytoarray   pdo-pgsql.copytofile   pdo.pgsqlcopyfromarray   class.pdo-pgsql   pdo.pgsqlcopyfromfile