Вы можете достичь этого, используя BCP Utility .Это не что иное, как запрос командной строки, который копирует данные, возвращаемые запросом, в нужный формат.Запустите приведенный ниже фрагмент кода после установки утилиты BCP на свой компьютер:
public class ExcelExport {
public static void main(String[] args) {
String excelFileName = "excel/myExcelFile.xls"; // Other formats also supported like .csv, .xlsx etc
String query = "The SQL Query goes here";
String databaseName = "DatabseName";
String ServerUrl = "DatabaseServerUrl/IP";
String userName = "DatabaseUsername";
String password = "DatabasePassword";
String bcpCommand = "bcp \"" + query + "\" queryout \"" + excelFileName + "\" -c -d \"" + databaseName
+ "\" -S " + ServerUrl + " -U \"" + userName + "\" -P \"" + password + "\"";
System.out.println("BCP Command : " + bcpCommand);
// Executes BCP command using command line
ProcessBuilder processBuilder = new ProcessBuilder("cmd.exe", "/c", bcpCommand);
try {
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while (true) {
line = reader.readLine();
if (line == null) {
break;
}
System.out.println(line);
}
System.out.println("Excel File Created !!!");
} catch (IOException ioException) {
ioException.printStackTrace();
System.out.println("Failed to export data to excel !!!");
}
}
}
ПРИМЕЧАНИЕ: Он не форматирует файлы Excel красиво, как это делает Apache POI, но когда речь идет об экспорте миллионовданных.Это экономит большое количество времени.Вы можете сделать форматирование вручную.Код копирует все данные, возвращаемые запросом.Так что имейте в виду, что количество записей не должно превышать ограничение на количество строк в файле Excel, равное 1 048 576 строк в текущей версии и 65536 до Office 2003. Итак, в вашем случае для 2 миллионов строк сделайтенесколько файлов, если требуется.