2012-07-27 70 views
0

目標是構建一個簡潔的SQL腳本來更改/更新表格,因爲在任何兩個時間點之間對模式進行了更改。管理對postgresql數據庫更新的技巧

例如,我在一臺機器上開發,在「A」日,我使用轉儲&恢復實用程序在生產計算機上安裝數據庫。然後在開發機器上進行一些更改並測試它們之後,在「B」日,我需要將我的模式的更改傳送到我的生產服務器上。

寫作我的模式(其中一些可能是實驗性的和撤消的)每一個命令的缺點,管理從A點到B點(或B點到F點升級模式的好方法是什麼那件事)?

更新:

似乎對數據庫DIFF樣概念時有很好的理由非常多皺起了眉頭。所以這給我留下了新的問題。

  1. 什麼是一個簡單的方法來清楚地管理你的實驗變化從你的生產值得的變化?只要你做一些不利的事情時,將你的開發數據庫恢復到最後一個已知的良好狀態?

  2. 可以將postgresql配置爲以可用作更新腳本的方式記錄所有操作?我問的原因是我喜歡與PgAdminIII合作,我寧願使用它來編寫更新腳本以用於構建或試驗。

回答

3

總之如果你想這樣做在一個可控和「專業」的方式寫的每一個命令,我讓我的模式

,還有周圍沒有辦法。你應該考慮使用模式的管理工具來幫助您組織和運行這些遷移腳本:

我們與Liquibase體驗非常好。我們用它在Oracle,DB2和PostgreSQL上進行遷移。

對於你可能想看看Sqitch

+3

而忘記任何神奇的工具,只是比較兩個數據庫架構,並生成DDL腳本從點A到D點Postgres的具體解決方案這不是代碼,這是具有真實數據的數據庫,通過點B和點C從點A到點D非常重要。 – 2012-07-27 19:34:54

+0

@SzymonGuz:好點。試圖將「開發」(或測試)數據庫與「乾淨的」生產數據庫進行比較(可能是一團糟)將在某些時候失敗。 – 2012-07-27 20:00:57

+0

謝謝你的迴應。這些都是好的,所以我修改了我的問題。 – andyortlieb 2012-07-28 02:13:56