![](/img/trans.png)
[英]Exporting data in google analytics api to CSV file format using JAVA
[英]Exporting large data into CSV from sqlserver using java
我在sqlserver中有900萬條記錄。 我正在嘗試將其導入到csv文件中,以便可以將該數據放入mongo db中。 我已經為sql2csv導入編寫了Java代碼。 但是我有兩個問題
我的代碼是這樣的
List list = new ArrayList();
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url, databaseUserName, databasePassword);
stmt = conn.prepareStatement("select OptimisationId from SubReports");
result = null;
result = stmt.executeQuery();
// stmt.executeQuery("select * from Subscription_OptimisationReports");
result.setFetchSize(1000);
while (result.next()) {
//System.out.println("Inside while");
SubReportsBean bean = new SubReportsBean();
bean.setOptimisationId(result.getLong(("OptimisationId")));
list.add(bean);
generateExcel(list);
}
//generateExcel(list);
conn.close();
}
有沒有更快的方法來快速導出所有數據? 如果它可以直接導出到mongo而不是csv,甚至更好。
也許您應該通過使用LIMIT和OFFSET一次只讀取一點來分頁數據。
select OptimisationId from SubReports OFFSET 0 ROWS FETCH NEXT 1000 ROWS ONLY;
select OptimisationId from SubReports OFFSET 1000 ROWS FETCH NEXT 1000 ROWS ONLY;
select OptimisationId from SubReports OFFSET 2000 ROWS FETCH NEXT 1000 ROWS ONLY;
...
只需保留偏移量即可。
如果使用此解決方案,則需要修改代碼以附加到Excel文件的末尾-不要將所有結果都保留在內存中,否則仍然會遇到OutOfMemoryException。
絕對地,當處理如此多的記錄時,在轉儲為CSV之前在列表中收集所有日期注定會失敗。
因此,您的解決方案2是解決之道。
您的代碼似乎與此解決方案相對應,但是我認為您只是忘記了移動列表聲明或在循環中清空列表。 你可以做:
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url, databaseUserName, databasePassword);
stmt = conn.prepareStatement("select OptimisationId from SubReports");
result = null;
result = stmt.executeQuery();
// stmt.executeQuery("select * from Subscription_OptimisationReports");
result.setFetchSize(1000);
while (result.next()) {
//System.out.println("Inside while");
SubReportsBean bean = new SubReportsBean();
bean.setOptimisationId(result.getLong(("OptimisationId")));
List list = new ArrayList();
list.add(bean);
generateExcel(list);
}
//generateExcel(list);
conn.close();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.