Prepopulate

Іноді вам може знадобитися, щоб ваша програма починала роботу з базою даних, яка вже завантажена певним набором даних. Це називається попереднім заповненням бази даних. У версії Room 2.2.0 і вище ви можете використовувати методи API для попереднього заповнення бази даних Room під час ініціалізації вмістом з попередньо запакованого файлу бази даних у файловій системі пристрою.

Попереднє заповнення з app asset

Щоб попередньо заповнити базу даних Room з готового файлу бази даних, який знаходиться в будь-якому місці в assets/ вашого додатку, викличте метод createFromAsset() з вашого об'єкта RoomDatabase.Builder перед викликом build():

Kotlin
Room.databaseBuilder(appContext, AppDatabase::class.java, "Sample.db")
  .createFromAsset("database/myapp.db")
  .build()
Java
Room.databaseBuilder(appContext, AppDatabase.class, "Sample.db")
  .createFromAsset("database/myapp.db")
  .build();

Метод createFromAsset() приймає рядковий аргумент, який містить відносний шлях від каталогу assets/ до файлу попередньо упакованої бази даних.

Prepopulate from the file system

Щоб попередньо заповнити базу даних Room з готового файлу бази даних, який знаходиться у будь-якому місці файлової системи пристрою, окрім assets/ вашого додатку, викличте метод createFromFile() з вашого об'єкта RoomDatabase.Builder перед викликом build():

Kotlin
Room.databaseBuilder(appContext, AppDatabase::class.java, "Sample.db")
  .createFromFile(File("mypath"))
  .build()
Java
Room.databaseBuilder(appContext, AppDatabase.class, "Sample.db")
  .createFromFile(new File("mypath"))
  .build();

Метод createFromFile() приймає аргумент File для попередньо упакованого файлу бази даних. Room створює копію вказаного файлу, а не відкриває його безпосередньо, тому переконайтеся, що ваша програма має права на читання цього файлу.