2012-03-02 79 views
1

我正在使用postgresql托管我的数据库。在我的数据库中,我有一个表,其结构如下所示xyz在JDBC中将portgresql表导出为CSV的问题

id content folder 
1  hello  Inbox 
2  hi   Sent 

我想将此表导出到CSV使用我的Java程序。代码段低于

Connection connection2 = new ServerDBConnect().getConnection(); 
PreparedStatement statement = connection2.prepareStatement("copy (SELECT * FROM xyz WHERE folder=?) to 'C:/export.csv' delimiter ','"); 
statement.setString(1, FOLDER_SELECTED); //Here, FOLDER_SELECTED=Inbox 
statement.execute(); 

当我执行这个代码,我越来越SQLException

ERROR: there is no parameter $1 

如果我没有("copy (SELECT * FROM xyz) to 'C:/export.csv' delimiter ','"))指定的文件夹执行代码,代码工作正常。

我在这里做错了什么?如何解决这个问题?

注意:如果我直接在Postgresql SQL控制台中执行查询(copy (SELECT * FROM xyz WHERE folder='Inbox' ORDER BY time) to 'G:/export.csv' delimiter ','),我会得到所需的输出。

请帮

+0

不知道如果这个问题与你有关:http://stackoverflow.com/questions/5726362/does-postgresql-jdbc-driver-has-copy – 2012-03-02 09:35:19

+0

@AndreaPolci:谢谢,但那个链接与我无关。我试图将本地数据库中的表格内容导出到本地系统 – 2012-03-02 09:42:23

+0

看起来与我相关。链接是一个问题,如何使用JDBC中的'copy'。 – skaffman 2012-03-02 11:49:55

回答

2

我终于找到了自己的答案。

查询零钱给了我希望的结果

该查询假设是这样

Connection connection2 = new ServerDBConnect().getConnection(); 
PreparedStatement statement = connection2.prepareStatement("copy (SELECT * FROM xyz WHERE folder='" + FOLDER_SELECTED + "') to 'C:/export.csv' delimiter ','"); 

这是推动我疯了,但最后还是做了:-)