2017-06-12 29 views
0

我的問題:如何在一個文件中存儲一小段信息而不會弄亂它的內容?

如何將自己的軟件的最新版本存儲在PostgreSQL所生成的轉儲文件?


原因我的問題:

我已經開發使用PostgreSQL數據庫的JAVA軟件。該軟件本地安裝在每個用戶的計算機上,並且數據庫也是每個用戶的本地和個人數據庫。

我創建了一個功能,以便用戶可以備份他們的數據庫並恢復它們。爲此,我的JAVA代碼運行pg_dump來生成備份文件,並使用pg_restore來恢復它。也就是說,備份無非是下面的命令生成的數據庫的轉儲更多:

pg_dump.exe -U myuser -h localhost -p 5432 -Fc -f bkpname.bkp mydb 

的問題是,我通常會推出軟件更新。新版本的軟件始終與以前版本的轉儲兼容。但是,舊版本的軟件與新版本生成的轉儲不兼容。

有時候會發生這樣的情況:用戶嘗試在軟件的舊版本中恢復最新版本的轉儲,這是不兼容的。

我希望轉儲文件具有生成該軟件的哪個版本的信息。這樣,我只需顯示一條消息,通知用戶他需要下載最新版本的軟件才能恢復備份。


我想到了下面兩種形式,但我認爲他們是不恰當的:

  1. 保存軟件的版本轉儲文件名。這將是不好的 因爲用戶可以重命名文件。
  2. 連接轉儲文件內容的版本。恐怕 轉儲文件可能在 輸入文本或在其中刪除文本 (恢復轉儲之前)的過程中可能會損壞。

有沒有更好的方法將此信息添加到轉儲文件?

+0

我建議創建您自己的備份zip文件,其中包含兩個文件 - 數據庫備份和您的應用程序版本。 –

+1

@viniciussss您可以將應用程序版本作爲註釋轉儲文件的第一行中的註釋 –

+0

@PrashantSaraswat恐怕zip命令有時會生成以後無法解壓縮的損壞文件。我沒有經歷過它。是否有意義?或者它是100%安全的,並且沒有機會使用zip命令生成損壞的文件? – viniciussss

回答

1

一個想法是將信息存儲在數據庫內的特殊表中。

表格未正常使用,並且在執行轉儲之前將正確的版本寫入其中。

之前恢復整個轉儲,首先只恢復表:

pg_restore --table dump_version -d mydatabase dumpfile.dmp 

然後你檢查什麼是表並進行相應處理。

相關問題