我想将测试数据加载到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'
");
我收到语法错误。
答案 0 :(得分:1)
\ copy由PostgreSQL客户端psql使用。 SQL语句COPY由用户Postgres完成,您的代码需要此用户或其他解决方案。
我非常喜欢pg_put_line,然后你可以用PHP读取文件并将其传输到PostgreSQL。