Используйте предварительно заполненные базы данных с Realm

Как мы можем преобразовать базу данных SQLite в базу данных Realm?

Есть ли способ использовать предварительно заполненные базы данных с Realm на Android?


person nekofar    schedule 07.10.2014    source источник


Ответы (2)


В настоящее время нет способа автоматически преобразовать базу данных SQLite в базу данных Realm, вам придется вручную считывать все данные из базы данных SQLite и вставлять их в Realm.

Альтернативой может быть браузер Realm, который может упростить эту задачу, но в настоящее время он доступен только для MacOS X. Вы можете прочитать больше здесь: https://github.com/realm/realm-java/issues/435

Для второй части: поскольку базы данных Realm представляют собой всего один файл, вы можете легко добавить предварительно заполненную базу данных Realm в свое приложение и ссылаться на нее с помощью Realm.getInstance().

person Christian Melchior    schedule 07.10.2014
comment
Привет, Не могли бы вы предоставить более подробную информацию о предварительном заполнении базы данных? - person Shajeel Afzal; 22.12.2015
comment
Вы можете увидеть пример создания предварительно заполненной базы данных из sqlite здесь. Документация Realm описывает процесс внедрения предварительно заполненной базы данных здесь. - person kee23; 04.01.2016

Это ответ на вторую часть вопроса.

При отправке предварительно заполненной базы данных в папке ресурсов вашего приложения, аналогично официальной цели-C, на объединить Realm с вашим приложением, вероятно, это самый быстрый способ получить предварительно заполненный Realm, если у вас много данных. Но начиная с Realm Java 0.89 появился официальный способ предварительного заполнения базы данных Realm на Android.

Теперь существует метод, который позволяет указать транзакцию, которая будет выполняться при первом создании базы данных Realm. Вы должны вызвать этот метод, initialData(Realm.Transaction transaction) в рамках настройки RealmConfiguration Builder.

Например

RealmConfiguration config = new RealmConfiguration.Builder(context)
  .name("myrealm.realm")
  .initialData(new MyInitialDataRealmTransaction()), 
  .build();
person Jade    schedule 25.04.2016
comment
не могли бы вы рассказать немного больше, как использовать это на практике? Я новичок в Realm, и после просмотра связанной документации мне не ясно, как мне это настроить. Я начинаю с совершенно нового приложения. В частности, я не уверен, как построить транзакцию, которую вы описали как MyInitialDataRealmTransaction. Спасибо заранее за ваше время. - person justinraczak; 28.09.2016