H2提供BACKUP命令,可以从SQL状态中使用并创建备份文件:
String url = "jdbc:h2:nioMemFS:atestdb";
try (Connection con = DriverManager.getConnection(url);
Statement s = con.createStatement()) {
s.execute("CREATE TABLE test_table ( test_values VARCHAR(255) )");
s.execute("INSERT INTO test_table (test_values) VALUES ('abc'), "
+ "('def'), ('hji')");
s.execute("BACKUP TO 'backup.zip'"); // writes to backup.zip
}
这也适用于内存数据库(编辑:它适用于nioMemFS文件系统,但不适用于普通的内存数据库;请参阅Oleg回答如下)。是否还有用于恢复此类数据库文件的命令?
谢谢!
答案 0 :(得分:1)
BACKUP命令不适用于内存数据库,当我尝试出现DATABASE_IS_NOT_PERSISTENT错误时,如果备份命令对您有用,则可能不使用持久数据库。
您可以使用SCRIPT和RUNSCRIPT分别通过从数据库创建和运行sql脚本来备份和恢复。
SCRIPT TO 'backup.sql';
RUNSCRIPT FROM 'backup.sql';