将文件中的大数据插入android sqlite数据库

Posted

技术标签:

【中文标题】将文件中的大数据插入android sqlite数据库【英文标题】:insert large data from file into android sqlite database 【发布时间】:2018-07-15 06:47:36 【问题描述】:

我在文件中存储了大约 9000 个 json 记录,其中包含 7-8 个属性。我必须将该数据插入sqlite 数据库。最有效的方法是什么。 到目前为止,我正在将该文件数据转换为jsonarray 并将其转换为arraylist,然后将该列表插入数据库,这绝对不是一种有效的方法 编辑:-这个文件已经存在于resources文件夹中,所以数据需要一开始就插入到数据库中

【问题讨论】:

使用 Realm 数据库。 或Objectbox androidhive.info/2016/05/… "花了大约 6-8 分钟" -- 如果您提供 minimal reproducible example,也许有人可以提供优化它的建议(例如,使用事务)。如果这些数据应该随您的应用一起提供,请不要提供 JSON,而是提供准备好的 SQLite 数据库和 use SQLiteAssetHelper 以使用该打包数据库。 不用转换Json -> JsonArray -> ArrayList -sqlite,使用Json-> JsonArray 直接一一放入sqlite数据库 【参考方案1】:

不要随应用提供 JSON,而是随应用提供 SQLite 数据库。

对于 JSON 来自其他地方(例如 Web 服务)的情况,请确保在使用该数据更新 SQLite 时使用事务。默认情况下,每个 SQL 操作都是单个事务,事务有点昂贵。在一个事务(或 9 个事务,或 90 个事务)中插入 9000 个项目比在 9000 个事务中插入 9000 个项目要快得多。如果您使用的是SQLiteDatabase,请使用beginTransaction()markTransactionSuccessful()endTransaction()。如果您使用的是 Room,请使用 @Transaction。如果您正在使用其他一些数据库 API,请查阅其文档以了解如何设置您自己的事务。

【讨论】:

以上是关于将文件中的大数据插入android sqlite数据库的主要内容,如果未能解决你的问题,请参考以下文章

Android SQLite 数据库:插入速度慢

将多个条目插入SQLite数据库android

Android实用程序将sqlite db发送到服务器

如何将 SQLite 数据库(SQLite Firefox 扩展)连接到 Android 应用程序,以便 android 2.1 查询并插入数据库

如何从android中的sqlite中检索数据

从Excel文件到SQLite数据库的SQLite插入循环