我想将一些数据从pgsql数据库保存到csv文件中。您还应该知道我正在使用ZF2 Framework。所以代码看起来像这样:
$adapter = $this->serviceMenager->get('db');
$adapter->query("Copy (Select * From data.my_data) To '/test.csv' With CSV;")->execute();
但是在我尝试执行代码时,我遇到了异常:
SQLSTATE[42501]: Insufficient privilege: 7 ERROR: could not open file "/test.csv" for writing: Permission denied
这是我期待的事情,因为唯一的写作路径是具有特权777的公共文件夹。但是如果我执行:
$adapter->query("Copy (Select * From data.my_data) To '/public/test.csv' With CSV;")->execute();
我得到例外:
SQLSTATE[58P01]: Undefined file: 7 ERROR: could not open file "/public/test.csv" for writing: No such file or directory
如何确定我(我的意思是当前路径)?以及如何在查询中正确设置路径以导出我的数据?
感谢您的建议。
答案 0 :(得分:0)
它似乎是在PGSQL上执行的,而不是像ins0所说的那样在MYSQL上执行。
问题几乎就是他所说的。您正在尝试写入/test.csv,这意味着PGSQL是Unix服务器的根目录。您需要提供您真正想要的路径,并且您实际上可以使用getcwd获取应用的根目录。
然后您的代码将如下所示:
$adapter = $this->serviceMenager->get('db');
$file = getcwd()."/public/test.csv";
$adapter->query("Copy (Select * From data.my_data) To '". $file ."' With CSV;")->execute();