我在 assets 文件夹中有一个 CSV 文件,其中包含超过 10000 行数据。我想在创建数据库时将此数据插入到 SQLite 数据库中。我不能包含数据库,因为它是一个非常通用的应用程序,而模型需要一个 CSV 文件。我不想读取所有 10000 行数据并从内存中一次性插入它。我如何有效且高效地完成任务?
最佳答案
阅读完该行后,立即插入即可。所以,不要将这些行存储在内存中的某个数组列表中。
例如
while ((line = reader.readLine()) != null) {
insert(line);
}
您可能希望在单个事务中执行此操作,以便在中途失败时可以回滚。在 JDBC 端,您可能需要考虑使用 PreparedStatement#addBatch()
/#executeBatch()
来批量执行插入操作。可以在 this answer 中找到示例.
更新:作为一个完全不同但更有效的替代方案,您也可以将 Java 排除在外并使用 CSV import facility provided by SQLite .
关于java - Android读取大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4369218/