【问题标题】:Database Result Output Spooling [closed]数据库结果输出假脱机[关闭]
【发布时间】:2013-10-22 01:39:01
【问题描述】:

如何将单个 SELECT sql 语句的每行结果假脱机到不同的输出文件? 例如,如果我有

SELECT * FROM myTable WHERE columnId < 45;

while (rs.next()) { 
  result of row1 goes to row1.txt; 
  result of row2 goes to row2.txt; 
  result of row3 goes to row3.txt; 
  result of row4 goes to row4.txt;
}

【问题讨论】:

  • 您使用的是什么 DBMS?您可以使用哪些编程语言?
  • 正在使用 oracle 数据库并正在使用 Java 编程

标签: java database file select output


【解决方案1】:

我会这样做(不是生产质量代码,而是一个基本想法):

private String spoolRow(ResultSet currentRow) 
{
    // Append each attribute to a StringBuilder in a nicely formatted way 
    // and return.
}

private void myMethod(....)
{
    ...
    ...
    FileOutputStream fos;
    String fileName;
    int counter = 1;
    while (rs.next()) {
        fileName = "row" + counter + ".txt";
        fos = new FileOutputStream(fileName);
        fos.write(spoolRow(rs));
        fos.close();
        counter++;
    }
    ...
    ...
}

如果您还需要列标题,则可以使用resultSet.getMetaData() 中的ResultSetMetaData 获取列名,准备标题并将其写入每个文件,然后再写入数据行。

【讨论】:

  • 不错的选择。会试试这个看看。非常感谢您的帮助
  • 这解决了手头的问题。非常感谢。我一直试图将答案评为最佳但无法获得链接。您能否提供有关如何执行此操作的线索?
猜你喜欢
  • 2018-09-26
  • 2013-05-19
  • 2021-10-11
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
相关资源
最近更新 更多