[英]How to download large Json data into CSV file in Java?
我是Java Web應用程序的新手。 我嘗試了下面的鏈接將數據的JSON
數組轉換為CSV
文件http://jsfiddle.net/JXrwM/11322/
現在的問題是,每當獲取大量JSONArray
值時,便無法盡快轉換CSV
文件。 加載時間太長。
像下面這樣獲取JSONArray
,
ResultSet rs = (ResultSet) statement.getObject(P_CURSOR);
JSONArray jsonArr = new JSONArray();
while (rs.next()) {
JSONObject data = new JSONObject();
data.put(LASTNAME, rs.getString(LASTNAME));
data.put(FIRSTNAME, rs.getString(FIRSTNAME));
jsonArr.put(data); //**Fetching JSONArray is too slow.**
}
這里的data
包含多個記錄,以及如何更快地獲取jsonArr
以及如何從ResultSet
數據下載到CSV文件中。
您的問題可能是您正在進行“完全”讀取,然后對“ CSV”文件進行了“完全”寫入。
含義:您的代碼首先將所有數據讀取到單個ResultSet
實例中,然后將該大對象一次性發送到CSVWriter。
也許答案是重新編寫整個代碼,以便一行一行地做到這一點。
含義:
通過這種解決方案,您可能能夠使用不同的線程來生成和使用該數據。 如圖所示:一個線程讀取單行,並將該數據放在“隊列”中,另一個線程從該隊列讀取,以寫入CSV數據。
這極有可能是使您加快整體執行時間的唯一方法。 當然,只有在確實有足夠的數據要處理的情況下,使用多個線程才有回報。
找到了如下解決方案,可使用傑克遜庫從resultset
集中以json
格式寫入大數據,
ResultSet rs = (ResultSet) statement.getObject(P_CURSOR);
StringWriter writer = new StringWriter();
JsonFactory jsonfactory = new JsonFactory();
JsonGenerator jsonGenerator = jsonfactory.createJsonGenerator(writer);
jsonGenerator.writeStartArray();
while (rs.next()) {
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField(KEY1, rs.getString(KEY1));
jsonGenerator.writeStringField(KEY2, rs.getString(KEY2));
jsonGenerator.writeStringField(KEY3, rs.getString(KEY3));
jsonGenerator.writeEndObject();
}
jsonGenerator.writeEndArray();
jsonGenerator.close();
這有助於以更少的加載時間從resultset
集中讀取和寫入大量數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.