那麼最好soution我發現迄今是將查詢發送:
SELECT EMP_NAME||', '|| EMP_LAST ||', '|| FROM EMP_TABLE
地圖文件:
<select id="testing" resultClass="java.lang.String">
SELECT EMP_NAME||', '|| EMP_LAST ||', '|| FROM EMP_TABLE
</select>
查詢將返回解析字符串作爲結果。
"Joe, Smith , 1000"
"Dave, Devon , 1300"
...
"Zoee, Zinther , 900"
我試圖2點的方法:
1. rowHandler:
long started1 = System.nanoTime();
SelectToFile selectToFileRowHandler = new SelectToFile("test1.csv");
sqlMap.queryWithRowHandler("map.testing", selectToFileRowHandler);
long time1 = (System.nanoTime()-started1);
System.out.println("with row handler: " + time1);
2.的queryForList:
long started2 = System.nanoTime();
@SuppressWarnings("unchecked")
List<String> lst = (List<String>)sqlMap.queryForList("map.testing");
BufferedWriter bw = new BufferedWriter(new FileWriter("test2.csv"));
for(String str : lst){
bw.write(str);
}
long time2 = (System.nanoTime()-started2);
System.out.println("with list: " + time2);
結果爲:
with row handler: 2242707000
with list: 2455066000
rowhandler was faster by: 448629000 (approx 0.44 sec for 50K entries 7MB csv file.)
如果有人知道更快的方法,我會高興地測試它,併發布結果。
來源
2014-02-02 11:01:32
Roy
其實我試圖做相反的事情,我試圖將選擇查詢結果保存爲.csv文件在本地。 – Roy
更新了條目閱讀器和條目編寫器相應的 –
謝謝,它是一個訣竅,但正如我所提到的「發送選擇查詢並解析其結果對我來說不是一種選擇。」。我的問題是,如果有辦法從oracle服務器接收結果並將其寫入.csv文件,而客戶端沒有任何其他操作。 – Roy