Android读取大文件

我在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行,提交,刷新。