Pdo\Pgsql::copyFromFile

(PHP 8 >= 8.4.0)

Pdo\Pgsql::copyFromFileファイルからデータをテーブルにコピーする

説明

public function Pdo\Pgsql::copyFromFile(
    string $tableName,
    string $filename,
    string $separator = "\t",
    string $nullAs = "\\\\N",
    ?string $fields = null
): bool

filename で指定されたファイルからデータを テーブル tableName にコピーします。その際、 separator をフィールドのデリミタ、そして fields のリストを使います。

パラメータ

tableName
テーブル名を含む文字列
filename
インポートするデータを含むファイル名
separator
rows 配列の各要素の中で フィールドを分割するためのデリミタ
nullAs
SQLの NULL 値をどのように扱うかを指定します
fields
挿入するフィールドの一覧

戻り値

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

エラー / 例外

filename を読み込み用に開けない場合、その失敗は 接続のエラー処理(PDO::ATTR_ERRMODE を参照)を通じて 報告されます。PDO::ERRMODE_EXCEPTION の場合は PDOException がスローされます。

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

ファイルは 1 行につき 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)');

file_put_contents('/tmp/fruits.tsv', "1\tapple\t10\n2\tbanana\t20\n");
$db->copyFromFile('fruits', '/tmp/fruits.tsv');

echo $db->query('SELECT count(*) FROM fruits')->fetchColumn(), "\n";
?>

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

2

参考