java - ResultSet 没有从 Oracle DB 中获取所有数据

标签 java oracle jdbc resultset

我的数据库中有一个表,其中包含 6,312,391 个寄存器。我将数据导出到许多文件,每个文件有 200 万个寄存器,但由于某种原因,最后一个文件中并非所有寄存器都按我的预期写入。我有 3 个包含 2M 寄存器的文件,最后一个文件只有 312,355,而不是 312,391。

可能发生了什么?我获取数据的java例程如下:

public void generarArchivoPorRegistros(int registersPerFile) {

    CallableStatement cs = null;
    ResultSet rs = null;

    connect();
    try {
        cs = connection.prepareCall("{call pec_pec_proc(?)}");
        cs.registerOutParameter(1, OracleTypes.CURSOR);
        cs.execute();

        rs = (ResultSet) cs.getObject(1);

        int numberOfFile = 1;
        int registersWrote = 0;
        try {
            BufferedWriter bw = new BufferedWriter(
                    new FileWriter("SEDESOL_" + (numberOfFile * registersPerFile/(1000000)) + "M.txt"));
            while (rs.next()) {
                if (registersWrote == registersPerFile) {
                    bw.close();
                    numberOfFile++;
                    bw = new BufferedWriter(
                            new FileWriter("SEDESOL_" + (numberOfFile * registersPerFile/(1000000)) + "M.txt"));
                    registersWrote = 0;
                }
                bw.write(rs.getString(1));
                bw.newLine();
                registersWrote++;
            }
        } catch (IOException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }
    } catch (SQLException ex) {
        Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
    }
    disconnect();
}

最佳答案

在 while 循环之后,您需要关闭最后一个 BufferedWriter。当你的程序退出时,它可能没有被刷新。

关于java - ResultSet 没有从 Oracle DB 中获取所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9621101/

相关文章:

java - EclipseLink 在 Oracle DB 上生成重复的主键

java - 捆绑服务组合 : org. sqlite.JDBC 未找到

java - 在android中只从字符串中获取数字

java - 运行 mvn clean install 时出现 Maven 错误?

java - 创建 Blob 时出现运行时异常

java - 检测当前使用 Java 的数据库

mysql - java jdbc插入外键时主键的重复条目

java.text.ParseException : Unparseable date: "20050327020000" 异常

java - 如何诊断tomcat崩溃的根本原因

c# - 如何使用 PetaPoco 从 Oracle 调用存储过程