Если вы действительно настаиваете на использовании Java для этого, то лучшим способом было бы написать немедленно , как только поступят данные, и, таким образом, не собирать всех данных из ResultSet
в память Java в первую очередь. В противном случае вам понадобится как минимум столько же свободной памяти на Java.
Таким образом, например,
while (resultSet.next()) {
writer.write(resultSet.getString("columnname"));
// ...
}
Тем не менее, большинство приличных БД поставляются со встроенными возможностями экспорта в CSV, которые, несомненно, намного эффективнее, чем когда-либо в Java. Вы не упомянули, какой из них вы используете, но если бы это был, например, MySQL, вы могли бы использовать для этого LOAD DATA INFILE
. Просто обратитесь к документации по БД. Надеюсь, что это дает новое понимание.