我正在使用Android SqliteAssetHelper库(https://github.com/jgilfelt/android-sqlite-asset-helper) 我使用这个库发送了我的数据库,数据库包含table1上的一些记录。 现在我想用一个带有附加记录的新数据库更新我的应用程序,这些记录应该插入我已发布的记录中。我不确定如何编写用于升级的SQL脚本,因为两个数据库的模式都相同。有没有人试过这个?
答案 0 :(得分:0)
在op在其他答案中发表评论之后,有人澄清说有两个数据库要合并在一起。操作系统想知道是否有一种方便的方法将两个数据库与SQLiteAssetHelper库合并。
不幸的是,没有直接方法,因为该库也使用运行脚本的相同Android模式来修改现有数据库。
解决方法是将第二个数据库(50个记录集)转换为50个INSERT语句,这些语句将放在现有的50个旁边。(互联网上有各种工具可以简化该步骤,因此您没有手动完成。)因此,只要业务逻辑可以与它们一起工作,如果模式相同,它们都可以进入原始表。或者如果你需要将它们分开,请仍然使用50个INSERT,但要将它们INSERT到不同的表名。
然后,一旦你有这50个INSERT语句和50个新行的数据,就把这些语句放在升级脚本中,你可以按照标准库documentation来了解如何通过这个来运行该脚本库。
答案 1 :(得分:0)
您可以使用sqldiff查找旧数据库与新数据库之间的差异来实现此目的。
您在两个数据库上调用sqldiff并将输出通过管道传输到符合SQL Asset Helper升级格式(即<database_name>_upgrade_<from_version>-<to_version>.sql
)的文件中。
所以,整个事情将是sqldiff database.db database_new.db > database.db_upgrade_1-2.sql
然后只需确保.sql
目录位于assets/databases
目录中并更改Java代码中的版本号(在示例中,从1更改为2)。