[英]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.