(PHP 8 >= 8.4.0)
Pdo\Pgsql::copyFromFile — ファイルからデータをテーブルにコピーする
$tableName,$filename,$separator = "\t",$nullAs = "\\\\N",$fields = null
filename で指定されたファイルからデータを
テーブル tableName にコピーします。その際、
separator をフィールドのデリミタ、そして fields のリストを使います。
tableNamefilenameseparatorrows 配列の各要素の中で
フィールドを分割するためのデリミタ
nullAsNULL 値をどのように扱うかを指定します
fields
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