android - 如何将数据从Sqlite迁移到Realm

标签 android sqlite realm android-sqlite data-migration

我将数据存储在 sqlite 数据库中,应用程序正在生产中。现在我正在考虑将数据从 Sqlite 迁移到 Realm DB。我有一个原始查询来从 Sqlite 读取数据,并且在迁移到迁移类中的 Realm 时,我试图将数据存储到 Realm 中,但我没有成功。任何人都可以帮助我。

public class Test extends RealmObject { 
    @PrimaryKey
    private String name;
    private String sex; 
}



//Migration Class


@Override
protected void doMigration(final DynamicRealm dynamicRealm) {
    RealmSchema realmSchema = dynamicRealm.getSchema();

    if (!realmSchema.contains("Test")) {
        RealmObjectSchema testSchema = realmSchema.create("Test");
        testSchema.addField("name", String.class, FieldAttribute.PRIMARY_KEY);
        testSchema.addField("sex", String.class);


//Trying to migrate data store data to realm from sqlite during migration itself.

 testSchema.transform(new RealmObjectSchema.Function() {
    @Override
    public void apply(final DynamicRealmObject obj) {
        if (!sqlTest.isEmpty()) {  //data from Sqlite
            for (Test tempTest : sqlTest) { //looping for sqlite data
                obj.set("name", tempTest.getName();
                obj.set("sex", tempTest.getSex());
            }
        }
     });
}

最佳答案

transform 方法用于改变现有对象,例如添加具有默认值的列、重命名列等:https://realm.io/docs/java/latest/#migrations

创建架构后,您需要迭代 sql 值并在 Realm 中添加数据,例如:

for (SqlTest sqlData : sqlTest) {
    Test test1 = realm.createObject(Test.class, UUID.randomUUID());
    test1.setName(sqlData.getName());
    test1.setSex(sqlData.getSex());
}

关于android - 如何将数据从Sqlite迁移到Realm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55211419/

相关文章:

.net - SQL Server Compact Edition 是 SQLite 的合理替代品吗?

sqlite - AsyncStorage 与 Expo.SQLite

android - RealmObject changeListener

android - 如何在支持 Android 2.2 的情况下设置供 GCM 使用的 Android 项目?

java - 安装 Android Studio,不指向有效的 JVM 安装错误

SQLite 与内部选择

java - 如何避免“检测到不一致。从单独的线程更新Realm时,“项目位置无效”?

java - Android Realm 无法构建javax/annotation/CheckForNull.class

Android:使用 android.provider.Telephony.Sms.Conversations

android - 如何使用Android Profiler在Android中查找不需要的引用