Как перенести данные из Sqlite в Realm - PullRequest
1 голос
/ 17 марта 2019

У меня есть данные, хранящиеся в sqlite DB, и приложение находится в производстве. Теперь я думаю о переносе данных из Sqlite в Realm DB. У меня есть необработанный запрос для чтения данных из Sqlite, и во время миграции в область внутри класса миграции я пытаюсь сохранить данные в область, но у меня ничего не получается. Может ли кто-нибудь помочь мне в этом.

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());
            }
        }
     });
}

Ответы [ 2 ]

2 голосов
/ 19 марта 2019

Метод преобразования используется для изменения существующих объектов, например, для добавления столбца со значением по умолчанию, переименования столбца и т. Д.данные в области, например:

for (SqlTest sqlData : sqlTest) {
    Test test1 = realm.createObject(Test.class, UUID.randomUUID());
    test1.setName(sqlData.getName());
    test1.setSex(sqlData.getSex());
}
0 голосов
/ 19 марта 2019
for (Test tempTest : sqlTest) {    ##sqlTest is data from Sqlite##
     DynamicRealmObject realmObject = dynamicRealm.createObject("Test", 'PrimaryKey'); 
     realmObject.set("name", tempTest.getname()); 
     realmObject.set("sex", tempTest.getsex()); 
    }
...