我正在开发一个基于 SQLite 数据库的字典应用程序,该数据库具有超过 300,000 行。
问题是最终形式的数据库文件由全文索引表组成,重量超过150Mb。
通过创建无内容的 fts4 表,我设法将 .db 文件大小降至最低。数据库不能更小。我还设法将预先填充的数据库放入应用程序中,它工作正常。
问题是我不能只将最终的 .db 文件保存在 /assets 中并在第一次运行时将其复制到 sdcard,因为它太大了。我也不想在第一次运行时下载它。
批量INSERT
处理数据,即使对事务和 sqlite 进行了优化,并且在开始时没有索引也需要永远,所以它也不是一个选项。
好消息是用于构建数据库的原始数据,CSV 格式和压缩,是30Mb和 sqlite 的命令行.import
选项非常快(约 1 秒内 100,000 行)但是......它不能从应用程序访问没有根权限。
我很想将应用程序与 /assets 中的压缩 CSV 文件捆绑在一起,解压缩它们,在 sdcard 上创建数据库,然后导入 CSV,但这在我看来是不可能的。尽管有许多字典应用程序似乎正是这样做的。(下载的应用程序有十几兆字节,第一次运行时构建数据库,并在 sdcard 上占用数百兆字节的空间)。
我该如何做到这一点?
在过去的两周里,我一直在研究这个,只是没有想法。我是 Android 开发的新手,因此非常感谢任何帮助。