簡體   English   中英

Android讀取大文件

[英]Android reading a large file

我在assets文件夾中有一個包含10000多行數據的CSV文件。 我想在創建數據庫時將此數據插入到SQLite數據庫中。 我不能包含數據庫,因為它是一個非常通用的應用程序,而且模型需要CSV文件。 我不想讀取所有10000行數據並將其從內存中插入一段。 如何有效地完成任務?

只需在讀完線后立即插入即可。 所以,只是不要將行存儲在內存中的某些arraylist中。

例如

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

您可能希望在單個事務中執行此操作,以便在中途失敗時可以回滾。 在JDBC方面,您可能需要考慮PreparedStatement#addBatch() / #executeBatch()來批量執行插入。 這個答案中可以找到一個例子。

更新 :作為一個完全不同但更有效的替代方案,您還可以將Java留在故事之外並使用SQLite提供的CSV導入工具

在這種情況下,最簡單和最有效的是從文件中一次讀取20-30-50行(或者可能是100行!)並插入到數據庫中,但是您還需要運行一些測試來查看是什么您可以在1中讀取的最佳行數然后執行:-)

IMPORT filename tablename

(來自http://old.nabble.com/How-can-I-load-big-file-into-a-sqlite-database--td19202500.html - 就像mysql中的LOAD DATA一樣)。

其他:禁用自動提交,自動刷新; 讀20行,提交,刷新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM