2013-03-08 236 views
0

我有一個至少有2GB數據的德比數據庫,我必須讀取這些數據並寫入文本文件。現在,一些列可能是blob數據類型。如何從數據庫中讀取大量數據並在java中寫入文件?

我現在的方法是以10的批處理大小(比方說)從一個表中讀取數據,並將數據(字符串列表)放入數組阻塞隊列中,最大大小爲10.從隊列中,一個線程會逐個挑選元素並寫入文件。

我面臨以下問題,

1. how to fetch 10 rows from a table in a single hit and fetch next 10 rows in second 
    hit and so on. 
    2. how to convert blob and binary data into string 
+0

base64編碼通常用於將二進制數據放入需要ascii(如電子郵件附件)的容器中。 Apache公共編解碼器包含一個base64實現http://commons.apache.org/proper/commons-codec// – Eelke 2013-03-08 06:35:58

回答

3

有沒有辦法爲你做這個明確。但是你可以設置fetchSize。這個參數是JDBC驅動程序提示許多行從數據庫中一次獲取的提示。但是司機可以自由地忽略這一點並做出它認爲合適的事情。一些驅動程序以塊的形式獲取行,有些則一次只讀取整個結果集。

使用讀取大小(取決於驅動程序)將緩衝數據,所以在性能方面沒有問題,因爲它隱含地爲您分塊。所以我們從resultset獲取數據的方式基本沒有區別。

+0

你是對的....如果我們假設setFetchSize()的作品...我們需要把這個循環? – abhijeet 2013-03-08 07:12:43

+0

是的,你需要循環resultset通常的方式(ResultSet.next()) – 2013-03-08 07:19:47

相關問題