【问题标题】:Exporting Database Query to CSV file, PostgreSQL & Java将数据库查询导出到 CSV 文件、PostgreSQL 和 Java
【发布时间】:2014-02-10 16:18:59
【问题描述】:

正如标题所述,我正在将本地数据库中的 java 查询导出到 CSV 文件中,所有必需的信息都正确打印出来,但是我的列标题打印在 A 列(第 1-8 行)中,而不是沿列 (A-H)。简而言之,我在第 1 列打印标题 1-8,然后以正确的顺序显示数千行数据。对java很陌生,如果我很傻,对不起!

        PrintWriter out = new PrintWriter(new BufferedWriter(
                new FileWriter("TestingRawData.csv")));

        ResultSetMetaData rsmd = result.getMetaData();
        int columnCount = rsmd.getColumnCount();

        for (int i = 1; i < columnCount + 1; i++) {
            String name = rsmd.getColumnName(i);
            out.println(name);
            // print the name
        }

        while (result.next()) {
            out.println(String.format("%s,%s,%s,%s,%s,%s,%s,%s",
                    result.getString(1), result.getString(2),
                    result.getString(3), result.getString(4),
                    result.getString(5), result.getString(6),
                    result.getString(7), result.getString(8)));

        }

【问题讨论】:

  • 与您的问题无关,但每个数据字段应用双引号括起来。这样可以防止数据中的逗号引起的任何问题。
  • 谢谢,马上整理一下

标签: java mysql sql postgresql csv


【解决方案1】:

除了这应该使用 CSV 库(例如 OpenCSV)来完成之外, println 输出换行符。请改用print

for (int i = 1; i < columnCount + 1; i++) {
    String name = rsmd.getColumnName(i);
    out.print(name);
    if (i != columnCount + 1) {
      out.print(",");
    }
}

【讨论】:

  • 感谢您的回复 =),现在它在 A 列第 1 行中一个接一个地打印我的 8 个表头
  • 您需要自己输出分隔符 - 这就是为什么使用 CSV 库要好得多:)
  • 谢谢你!现在可以工作了,所有标题都显示出来了,我会看看 CSV 库,我在某处读过它,所以我会改变它,你知道为什么现在 I-P 列包含数据吗?只有一行,显示为标题(当它们应该为空白时)再次感谢您
  • 除了 OpenCSV,还可以查看 JacksonCSV 映射器以获取 CSV 库。
猜你喜欢
  • 2017-10-16
  • 2015-05-25
  • 2018-09-11
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 2011-12-28
相关资源
最近更新 更多