我在 Android 中使用 Room 作为我的数据库。最近我不得不为我的主数据库创建一个备用数据库,所以现在我有 2 个数据库。
abstract class FirstDatabase : RoomDatabase()
abstract class ScondDatabase : RoomDatabase()
我想将 FirstDataBase
中的表复制到 SecondDataBase
。我知道我应该写迁移,但我不知道该怎么做。
这是我当前使用匕首进行房间迁移:
fun provideDatabaseMigration56(): Migration {
return object : Migration(DATABASE_VERSION_5, DATABASE_VERSION_6) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("DROP TABLE IF EXISTS `pins`")
}
}
}
fun provideDatabaseMigration45(): Migration {
return object : Migration(DATABASE_VERSION_4, DATABASE_VERSION_5) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("CREATE TABLE IF NOT EXISTS `pins` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `slug` TEXT NOT NULL)")
}
}
}
答案 0 :(得分:1)
您正在寻找的是 SQLite ATTACH DATABASE
语句。这允许您将附加数据库附加到当前连接,然后运行引用两者中的表的查询。有一些详细的文档 here 显示了语法:
ATTACH DATABASE file_name AS database_name;
然后,您可以运行引用两个数据库中的表的查询,但请确保在引用附加数据库中的表时,您将其称为
database_name.table_name
而不仅仅是table_name
。