事情是当程序执行查询时将表复制到文件 .CSV。 Qt 显示下一个错误。
"ERROR: syntax error at end of input LINE 1: EXECUTE
导出操作的代码如下:
QSqlQuery qry;
qry.prepare("copy inventory to './inventory.csv'");
if(qry.exec()){
qDebug()<<"Succes";
}else{
qDebug()<<qry.lastError().text();
}
qt的版本是5.4,使用的是postgresql 9.3,驱动PQSQL运行良好,可以像select一样很好的执行别人的query。
谢谢。
最佳答案
您提到您正在使用 Qt 的 SQL 接口(interface)及其 PostgreSQL 驱动程序。
虽然 Qt 的 PostgreSQL 驱动程序构建在 PostgreSQL 的标准客户端库 libpq
之上,但据我所知,它不支持 libpq
的许多功能.特别是,似乎无法访问对COPY
协议(protocol)的支持,也无法访问对异步通知的LISTEN
ing 的支持。
你必须:
libpq
直接COPY ... FROM STDIN
- 或通过 Qt 使用常规
INSERT
语句;或 - 将 CSV 输入传输到服务器,然后使用
COPY ... FROM '/path/on/server'
从运行 PostgreSQL 数据库的服务器上的文件中读取输入, PostgreSQL 数据库运行的用户可读。
(您还可以向 Qt 提交一个补丁以添加对 COPY
协议(protocol)的支持,这应该不会太难实现,但如果您要问这个可能不是最好的选择.)
关于qt - 无法创建查询 COPY PostgreSQL PQSQL 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31309181/