将文件中的大数据插入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 数据库和 useSQLiteAssetHelper
以使用该打包数据库。
不用转换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数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何将 SQLite 数据库(SQLite Firefox 扩展)连接到 Android 应用程序,以便 android 2.1 查询并插入数据库