2010-12-06 267 views
2

我有一個CSV文件,資產文件夾中有超過10000行數據。我想在創建數據庫時將這些數據插入到SQLite數據庫中。我不能包含數據庫,因爲它是一個非常通用的應用程序,而該模型需要一個CSV文件。我不想讀取所有10000行數據並在一段時間內將其從內存中插入。我如何有效和高效地完成任務?Android閱讀大文件

回答

6

只要插入立即一旦你讀完了這一行。所以,不要將行存儲在某個數組列表中。

E.g.

while ((line = reader.readLine()) != null) { 
    insert(line); 
} 

您可能希望在單個事務中執行此操作,以便在半途中斷時可以回滾。在JDBC方面,您可能想要考慮PreparedStatement#addBatch()/#executeBatch()批量執行插入。一個例子可以在this answer中找到。

更新:作爲一個完全不同但更高效的替代方案,您還可以將Java留在故事之外並使用CSV import facility provided by SQLite

+0

感謝您的回答,我有另一個問題http://stackoverflow.com/questions/4369325/android-finding-files-on-the-sdcard – 2010-12-06 17:49:59

3

最簡單,最有效的在這種情況下,是一次從文件中讀取20-30-50(或者100?)線,並插入到數據庫中,但是你也需要運行一些測試來看到的是,你可以在1個隨時隨地瀏覽線的最佳數量,然後實現它:-)