簡體   English   中英

用Java代碼備份和還原Hsqldb數據庫

[英]Backup and restore of Hsqldb database in java code

我是Hsqldb數據庫的新手。 我想知道如何通過Java代碼進行Hsqldb數據庫的備份和還原。

使用BACKUP DATABASE TO命令。

這是文檔的鏈接:

HSQLDB系統管理文檔

我還沒有測試過,但是我想這有點像:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM