Pdo\Pgsql::copyFromFile
ファイルからデータをテーブルにコピーする
説明
public bool Pdo\Pgsql::copyFromFile(
string $tableName,
string $filename,
string $separator = "\t",
string $nullAs = "\\\\N",
stringnull $fields = null
)
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";
?>
参考
- Pdo\Pgsql::copyToFile
- Pdo\Pgsql::copyFromArray
- Pdo\Pgsql::copyToArray