h2データベースでのバックアップ、リストアの方法。
ORMLiteを使っているのだけれど、とりあえずはdaoオブジェクトでexecuteすればいいということにする。
ちなみにコードはKotlinです。
object DatabaseHelper { val connectionSource by Delegates.lazy { val databaseUrl = "jdbc:h2:~/test" JdbcConnectionSource(databaseUrl) }; { setUpDatabase(connectionSource) } private fun setUpDatabase(connectionSource: ConnectionSource) { TableUtils.createTableIfNotExists(connectionSource, javaClass<User>()) } fun getUserDao() : Dao<User, Int> = DaoManager.createDao(connectionSource, javaClass<User>())!! fun close() = connectionSource.close() fun backup(backupPath: String) { getUserDao().executeRaw("SCRIPT TO ? COMPRESSION GZIP", backupPath) } fun restore(filePath: String) { getUserDao().executeRaw("RUNSCRIPT FROM ? COMPRESSION GZIP", filePath) } }
BACKUP TO “filename.zip”だと、データベースファイルをzipに固めたものが取れるのだけれど、できればmysqldumpみたいなのが欲しいなと思っていて調べたところ、SCRIPT TO “filename”がよいということがわかった。その上でさらに圧縮したい場合は、後ろにCOMPRESSION GZIPを付ければいいらしい。
リストアは、RUNSCRIPT FROM “filename”です。こっちはまだ確かめてないけど。これも圧縮状態から読み込めるらしい。
参考URL:
https://groups.google.com/d/msg/h2-database/fJgSDA6-iKs/Iyc7P9e3fRQJ