0

postgresql データベースのテーブルにテスト データをロードしたいと考えています。

私は単体テストクラス内でこれを行っています。

$this->Application_Model_UserMapper->getDbTable()->getAdapter()->query("COPY users FROM '" . APPLICATION_PATH . "/../tests/dbtestdata/users.csv' CSV HEADER NULL AS E'\N'");

ファイルとの間でコピーするには、スーパー ユーザーでなければならないというエラー メッセージが表示されます。それは、postgres ユーザーとしてログインする必要があるということですか? それがセキュリティ上の問題を引き起こす可能性があることを読んだので、私はそれをすることに熱心ではありません.

他のオプションは \COPY のようですが、次のようには動作しません..

$this->Application_Model_UserMapper->getDbTable()->getAdapter()->query("

  \COPY users FROM '" . APPLICATION_PATH . "/../tests/dbtestdata/users.csv' 
  CSV HEADER NULL AS E'\N'

");

構文エラーが発生します。

4

1 に答える 1

1

\copy は、PostgreSQL クライアントである psql によって使用されます。SQL ステートメント COPY はユーザー Postgres によって実行されます。コードにはこのユーザーまたは別のソリューションが必要です。

私はpg_put_lineが本当に好きです。そうすれば、PHP でファイルを読み取って PostgreSQL にストリーミングできます。

于 2012-07-05T15:30:44.050 に答える