CSV 流式匯出

2021-08-28 03:48:05 字數 2452 閱讀 2681

隨著業務的不斷壯大發展,需要匯出的資料量也越來越大!普通的excel匯出匯出乙份上萬條的資料可能會用幾分鐘,十萬條和百萬條的資料量更是不敢想象,可能直接就oom了。

所以我們需要找到更快速,減少記憶體開銷的方法來處理匯出。

我這裡會介紹一種流式處理匯出的方法,自己寫成了乙個通用工具,以便不同的服務呼叫。

一、獲取資料處理成可用的資料

1、實現類需要實現 exportprocessor

2、查詢條件需要繼承exportquery

api介面:

public

inte***ce

exportprocessor

extends

exportquery>

pager.pagedata pagedata = page.getpage();

if (pagedata == null)

return pagedata.gettotalpage() > pagedata.getcurpage();

}}

@data

public

class

exportresult

exportresult result = exportresultdataadapt(mainorderdatalist);

private

final

static string work_order_file_name = "工單詳情列表";

private

final

static listheads = lists

.newarraylist("工單id", "日期", "城市", "銷售點code", "銷售點名稱", "配送蜂房code", "配送蜂房", "工單型別", "計畫完成時間", "工單狀態", "對接op1",

"取消時間", "取消原因code", "取消原因", "取消備註");

exportfactory.doexport( httpservletresponse response, work_order_file_name, heads, exportquery, workorderexportprocessor);

使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細語法參考幫助?。

/**

* csv流式匯出

//列印每行

safes.of(data).foreach(item -> );

if (!exportresult.ishasnext())

}print.flush();

print.close();

}public

static

void

println(printwriter print, listdata) ", jsonutils.tojsonstring(characters));

stringbuilder tmp = new stringbuilder();

if (collectionutils.isempty(data))

for (int i = 0; i < data.size(); i++)

string val = data.get(i);

if (numberutils.isnumber(val) && val.length() > 15)

if (stringutils.isnotblank(val) && collectionutils.isnotempty(characters)) }}

}/**

* 設定頭

}

後面會基於註解的方式處理再寫一篇~

ORACLE匯出CSV檔案

oracle的匯出功能會經常使用,也同樣經常會有需求進行匯出為csv檔案,用於往別的資料庫進行遷移,本次例項及在oracle實現匯出csv檔案操作。sqlplus as sysdba sql create or replace directory out path as home wenxuecha...

java web匯出csv檔案

用csv匯出取代excel匯出的原因 poi匯出excel時會出現以下問題 excel2003 單sheet最多只能匯出65536條資料 excel2007 單sheet能匯出百萬級資料,彌補了2003的缺陷 excel每建立乙個單元格就會生成乙個物件,並且excel生成過程中不會釋放物件,所以會占...

匯出csv檔案示例

匯出csv檔案示例 csv檔案預設以英文逗號,做為列分隔符換行符 n作為行分隔符,寫入到乙個.csv檔案即可。含有英文逗號,和換行符會發生資料輸出會出現混亂,下面列出一些處理方法。特殊字元處理 1 含有英文逗號或換行符。這時可以使用雙引號 來將該字段內容括起來,csv預設認為由 括起來的內容是乙個字...