Limitation of OpenCSV Reader-Java



我使用OpenCSV Reader - java加载我的CSV文件(文件大小:-1.47 GB(1,585,965,952字节))。

但是,在我的编码中,每当它只设法将 10950 条记录插入 PostgreSQL 数据库时。

  CSVReader csvReader = new CSVReader(new FileReader(csvFilename));
    String[] row = null;
    String sqlInsertCSV = "insert into ip2location_tmp_test
    (ip_from, ip_to, xxxxx, "
    + "xxxxx, xxxxx,xxxxx, "
    + "xxxxx,xxxxx, xxxxx, xxxxx, xxxxx, xxxxx,xxxxx,xxxxx)"
    + " VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
    while((row = csvReader.readNext()) != null) {
    PreparedStatement insertCSV = conn.prepareStatement(sqlInsertCSV);
    insertCSV.setLong(1, Long.parseLong(row[0]));
    ....
    ....
    insertCSV.setString(14, row[13]); // usage_type     
    insertCSV.executeUpdate();  
}
    csvReader.close();
    PreparedStatement insertCSV = conn.prepareStatement(sqlInsertCSV); 
    insertCSV.executeUpdate(); 
   } 

OpenCSV有什么限制吗?

我需要使用 setString 函数来满足 PostgreSQL 中的单引号。

它没有错误。它就这样停止了

嗨克雷格,COPY 命令必须是超级用户。以前试过

第一个问题:您告诉我们文件中有多少字节,但文件中有多少条记录(行)? 如果文件有 10950 行,那么一切正常。

第二个问题:为什么在while循环之外有prepareStatement/executeUpdate? 在我看来,会尝试插入最后一条记录两次或插入空记录,因为一旦您在外面,而您没有数据,因为 csvReader 返回 null。

使用您正在使用的"按时间记录"方法,您可以读取的记录数没有限制。 检查数据文件以查看第 10950 行周围的文件中是否没有意外的回车符。

相关内容

  • 没有找到相关文章

最新更新