问候,
我从数据库中获取大量记录并写入文件.我想知道编写大文件的最佳方法是什么. (1Gb – 10Gb).
我从数据库中获取大量记录并写入文件.我想知道编写大文件的最佳方法是什么. (1Gb – 10Gb).
目前我正在使用BufferedWriter
BufferedWriter mbrWriter=new BufferedWriter(new FileWriter(memberCSV)); while(done){ //do writings } mbrWriter.close();
解决方法
如果您真的坚持使用Java,那么最好的方法是在数据进入后立即写入,因此不要先将ResultSet中的所有数据收集到Java的内存中.否则你至少需要Java中的那么多可用内存.
因此,例如
while (resultSet.next()) { writer.write(resultSet.getString("columnname")); // ... }
也就是说,大多数像样的DB都有内置的导出到CSV的功能,这些功能无疑比你用Java做的更有效率.你没有提到你正在使用哪一个,但如果它是例如MysqL,你可以使用LOAD DATA INFILE
.只需参考特定于DB的文档.希望这能带来新的见解.