0
我想将测试数据加载到我的postgresql数据库中的表中。将CSV导入到postgresql(Zend/PHP)
我正在做我的单元测试课内。
$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'
");
我得到一个语法错误。
感谢您的提示!我几乎使用这里的代码工作:http://php.net/manual/en/function.pg-put-line.php但由于某种原因,COPY不识别我的列和行分隔符(\ t和\ n)。我通过将其更改为'|'来解决列分隔符问题,但我无法提供超过1行的数据。你有什么建议吗? – crazyphoton 2012-07-06 10:08:44
你能提供一个简单的例子来说明问题吗? – 2012-07-06 10:47:01
http://pastebin.com/srwFLdut 它不识别\ n所以我不能插入超过1行。 – crazyphoton 2012-07-09 09:37:22