Prepopulate
Іноді вам може знадобитися, щоб ваша програма починала роботу з базою даних, яка вже завантажена певним набором даних. Це називається попереднім заповненням бази даних. У версії Room 2.2.0 і вище ви можете використовувати методи API для попереднього заповнення бази даних Room під час ініціалізації вмістом з попередньо запакованого файлу бази даних у файловій системі пристрою.
Попереднє заповнення з app asset
Щоб попередньо заповнити базу даних Room з готового файлу бази даних, який знаходиться в будь-якому місці в assets/ вашого додатку, викличте метод createFromAsset() з вашого об'єкта RoomDatabase.Builder перед викликом build():
Room.databaseBuilder(appContext, AppDatabase::class.java, "Sample.db")
.createFromAsset("database/myapp.db")
.build()
Метод createFromAsset() приймає рядковий аргумент, який містить відносний шлях від каталогу assets/ до файлу попередньо упакованої бази даних.
Prepopulate from the file system
Щоб попередньо заповнити базу даних Room з готового файлу бази даних, який знаходиться у будь-якому місці файлової системи пристрою, окрім assets/ вашого додатку, викличте метод createFromFile() з вашого об'єкта RoomDatabase.Builder перед викликом build():
Room.databaseBuilder(appContext, AppDatabase::class.java, "Sample.db")
.createFromFile(File("mypath"))
.build()
Метод createFromFile() приймає аргумент File для попередньо упакованого файлу бази даних. Room створює копію вказаного файлу, а не відкриває його безпосередньо, тому переконайтеся, що ваша програма має права на читання цього файлу.