在JDBC中将postgresql表导出为CSV的问题

时间:2012-03-02 09:25:19

标签: java sql postgresql jdbc csv

我正在使用postgresql来托管我的数据库。在我的数据库中,我有一个表格xyz,其结构如下所示

id    content    folder
1     hello      Inbox
2     hi         Sent

我想使用我的java程序将此表导出为CSV。代码段位于

之下
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 ','),我将获得所需的输出。

请帮忙

1 个答案:

答案 0 :(得分:2)

我终于找到了答案。

查询中的小变化给了我想要的结果

该查询假设是这样的

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

这让我发疯,但终于完成了: - )