我是Hsqldb数据库的新手。我想知道如何通过java代码备份和恢复Hsqldb数据库。
答案 0 :(得分:3)
使用BACKUP DATABASE TO
命令。
以下是文档的链接:
HSQLDB System Management Documentation
我没有对此进行过测试,但我认为这有点像:
String backup = "BACKUP DATABASE TO " + "'" + filePath + "' BLOCKING";
PreparedStatement preparedStatement = connection.prepareStatement(backup);
preparedStatement.execute();
你当然希望将它包装在try-catch块中。
就恢复数据库而言,我认为您必须在数据库使用DbBackupMain应用程序脱机时执行此操作。因此,您将在命令行发出此命令:
java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --extract tardir/backup.tar dbdir
答案 1 :(得分:2)
每个 HyperSQL数据库称为目录。根据数据的存储方式,有三种类型的目录。
目录数据的类型:
mem :完全存储在RAM中 - 没有超出JVM进程生命的任何持久性
文件:存储在文件系统文件中
res :存储在Java资源中,例如Jar,并且始终是只读的
要备份正在运行的目录,请获取JDBC连接并在SQL中发出BACKUP DATABASE命令。在最简单的形式中,下面的命令格式将数据库作为单个.tar.gz文件备份到给定目录。
BACKUP DATABASE TO <directory name> BLOCKING [ AS FILES ]
目录名必须以斜杠结尾以将其区分为目录,并且整个字符串必须使用单引号,如下所示:&#39; subdir / nesteddir /&#39;。
要备份脱机目录,目录必须处于关闭状态。您将运行像
这样的Java命令 java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --save tardir/backup.tar dbdir/dbname
。在此示例中,数据库名为dbname,位于dbdir目录中。备份将保存到tardir目录中名为backup.tar的文件中。
其中tardir / backup.tar是要在文件系统中创建的* .tar或* .tar.gz文件的文件路径,dbdir / dbname是目录文件基本名称的文件路径。
您可以在操作系统命令行上使用DbBackup从备份还原目录。
java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --extract tardir/backup.tar dbdir
其中tardir / backup.tar是要读取的* .tar或* .tar.gz文件的文件路径,dbdir是将目录文件解压缩到的目标目录。请注意,dbdir指定目录路径,而不指定目录文件基本名称。将使用存储在tar文件中的名称创建文件。 有关详细信息refer
答案 2 :(得分:0)
所以在java + SPring + JdbcTemplate
中备份(在线):
@Autowired
public JdbcTemplate jdbcTemplate;
public void mainBackupAndRestore() throws IOException {
...
jdbcTemplate.execute("BACKUP DATABASE TO '" + sourceFile.getAbsolutePath() + "' BLOCKING");
}
这会将.properties,.scripts和.lobs文件保存到sourceFile.getAbsolutePath()中的tar。
<强>恢复强>
DbBackupMain.main(new String[] { "--extract", baseDir.getAbsolutePath(),
System.getProperty("user.home") + "/restoreFolder" });
这将从baseDir.getAbsolutePath()获取文件,并将它们放在userHome / restoreFolder中,您可以在其中检查所有还原是否正常。 lobs包含lob / blob数据,脚本包含已执行的查询。