h2データベースのバックアップ、リストア

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


タグ Java, Kotlin | パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です