繁体   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