Android读取大文件

时间:2010-12-06 17:35:47

标签: java android database csv

我在资产文件夹中有一个包含超过10000行数据的CSV文件。我想在创建数据库时将此数据插入到SQLite数据库中。我不能包含数据库,因为它是一个非常通用的应用程序,而且模型需要CSV文件。我不想读取所有10000行数据并将其从内存中插入一段。如何有效地完成任务?

3 个答案:

答案 0 :(得分:6)

阅读完毕后,只需立即插入 即可。所以,只是不要将行存储在内存中的某些arraylist中。

E.g。

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

您可能希望在单个事务中执行此操作,以便在中途失败时可以回滚。在JDBC方面,您可能需要考虑PreparedStatement#addBatch() / #executeBatch()来批量执行插入。可以在this answer中找到一个示例。

更新:作为一种完全不同但更有效的替代方案,您也可以将Java留在故事之外并使用CSV import facility provided by SQLite

答案 1 :(得分:3)

在这种情况下最简单和最有效的方法是从文件中一次读取20-30-50行(或者可能是100 ?!)行并插入数据库,但是您还需要运行一些测试才能看到您可以在1中读取的最佳行数是多少,然后执行: - )

答案 2 :(得分:1)

  

IMPORT filename tablename

(来自http://old.nabble.com/How-can-I-load-big-file-into-a-sqlite-database--td19202500.html - 类似于mysql中的LOAD DATA)。

其他: 禁用自动提交,自动刷新;读20行,提交,刷新。