2010-12-06 83 views
2

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

回答

6

只要插入立即一旦你读完了这一行。所以,不要将行存储在某个数组列表中。

E.g.

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

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

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

+0

感谢您的回答,我有另一个问题http://stackoverflow.com/questions/4369325/android-finding-files-on-the-sdcard – 2010-12-06 17:49:59

3

最简单,最有效的在这种情况下,是一次从文件中读取20-30-50(或者100?)线,并插入到数据库中,但是你也需要运行一些测试来看到的是,你可以在1个随时随地浏览线的最佳数量,然后实现它:-)