将CSV导入postgresql(Zend / PHP)

时间:2012-07-05 14:29:07

标签: php postgresql zend-framework postgresql-9.1

我想将测试数据加载到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'

");

我收到语法错误。

1 个答案:

答案 0 :(得分:1)

\ copy由PostgreSQL客户端psql使用。 SQL语句COPY由用户Postgres完成,您的代码需要此用户或其他解决方案。

我非常喜欢pg_put_line,然后你可以用PHP读取文件并将其传输到PostgreSQL。