[英]Backup and restore of Hsqldb database in java code
我是Hsqldb數據庫的新手。 我想知道如何通過Java代碼進行Hsqldb數據庫的備份和還原。
使用BACKUP DATABASE TO
命令。
這是文檔的鏈接:
我還沒有測試過,但是我想這有點像:
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
每個HyperSQL數據庫都稱為目錄 。 根據數據的存儲方式,共有三種類型的目錄。
目錄數據類型 :
mem :完全存儲在RAM中-在JVM進程生命周期之外沒有任何持久性
file :存儲在文件系統文件中
res :存儲在Java資源(例如Jar)中,並且始終為只讀
要備份正在運行的目錄 ,請獲取JDBC連接並在SQL中發出BACKUP DATABASE命令。 以最簡單的形式,下面的命令格式會將數據庫作為單個.tar.gz文件備份到給定目錄。
BACKUP DATABASE TO <directory name> BLOCKING [ AS FILES ]
目錄名稱必須以斜杠結尾以將其區分為目錄,並且整個字符串必須用單引號引起來,例如:'subdir / nesteddir /'。
要備份脫機目錄 ,目錄必須處於關閉狀態。 您將運行以下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文件中的名稱創建文件。 有關更多詳細信息, 請參閱
所以在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數據,腳本包含執行的查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.