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 回答