我一直在使用JDBC与本地Postgres DB一起使用Postgres COPY命令将CSV文件中的数据复制到数据库中.我使用Java将现有的CSV文件解析成与DB中的表格匹配的CSV格式.然后我将解析后的CSV保存到本地磁盘.然后我让JDBC使用解析的CSV执行COPY命令到我的本地数据库.一切都按预期工作.现在,我正在尝试使用JDBC在远程服务器上的Postgres DB上执行相同的过程.但是,当JDBC尝试执行COPY时,我得到了
org.postgresql.util.PSQLException: ERROR: could not open file "C:\data\datafile.csv" for reading: No such file or directory
我是否正确理解COPY命令告诉DB在本地查找此文件?IE远程服务器正在查看其C:驱动器(不存在).
如果是这种情况,无论如何都要指示复制命令在我的计算机上查找而不是在远程计算机上"本地"?通过复制文档阅读我没有发现任何表明此功能的内容.
如果功能不存在,我想只是在本地填充整个数据库然后复制到数据库到远程服务器,但只是想检查我没有遗漏任何东西.
谢谢你的帮助.
在客户端计算机上按如下方式创建sql文件
COPY testtable (column1, c2, c3) FROM STDIN WITH CSV;
1,2,3
4,5,6
\.
然后在您的客户端执行
psql -U postgres -f /mylocaldrive/copy.sql -h remoteserver.example.com
如果您使用 JDBC,最好的解决方案是使用 PostgreSQL COPY API http://jdbc.postgresql.org/documentation/publicapi/org/postgresql/copy/CopyManager.html
否则(正如其他人已经指出的),您可以使用 psql 中的 \copy ,它允许访问客户端计算机上的本地文件
| 归档时间: | 
 | 
| 查看次数: | 6150 次 | 
| 最近记录: |