2012-01-24 79 views
1

我希望PostgreSQL專家可以幫助解決這個問題;)爲了避免責任問題,我們被要求用我們的數據庫模式中的「客戶端」替換「患者」一詞的所有實例。但是,我們使用PGAdmin。如何大量替換PostgreSQL數據庫模式中的結構?

The catch:我們的數據庫「guy」目前正在度假。

鑑於這不是一個小的改變,改變模式和最小化中斷的最有效和最有效的方法是什麼? PGAdmin做到這一點有效嗎?還是我需要去SQL路線?

謝謝!

+2

_seems_就像一個尖尖的事情必須做的事情。我希望有人有一個很好的答案,但我比這個答案更吸引我。 –

+0

@WayneConrad我們的客戶之一在開發中有很大的參與度,並被用作參考案例。鑑於他們的服務爲癌症治療提供運輸服務,他們要求我們更改所有術語代碼和文件,以便與實際醫療實踐無關。 – crockpotveggies

+0

@WayneConrad p.s.愛參考dilbert;) – crockpotveggies

回答

1

PostgreSQL是能夠改變列名和表名:

alter table patients rename to clients; 
alter table visits rename column patient_id to client_id; 

您可以將這些變化在一個事務中,使所有無論發生一次,或者根本沒有:

begin; 
alter table this... 
alter table that... 
... 
commit; 

數據庫有使用它們的程序,而這些程序通常與模式中的名稱綁定。您的客戶程序是否可以自動適應模式更改?

+0

謝謝!是的,我們可以使我們的客戶端軟件適應模式更改,幸運的是,不需要更改數據,只需要模式。這將在本地進行測試,然後通過數據庫演進和GIT進行推送。 – crockpotveggies

+1

注意視圖,存儲函數和觸發器中使用的表名稱和列名稱。 – Skrol29

1

如果你擁有的奢侈品,一個非常簡單的方法是用sedpg_dump

pg_dump -s [arguments to connect to your database] | sed 's/patient/client/g' > new_structure.sql 

這(可能)讓你有「病人」的每個實例更改爲「客戶端的新模式, 「但它對於你的數據並沒有太大的作用,所以你必須單獨轉儲和加載數據,這可能無法輕鬆完成。韋恩的答案是更好的,但無論哪種方式,你可能有大量的應用程序更改,以協調在同一時間。

如果可能的話,我會延遲,這不是一個你應該輕視的改變。

+0

幸運的是,我可以在本地測試一切,然後使用GIT推送更改。我同意我可能會採用韋恩的方法,但如果我對PGSQL更有經驗,我可能會走這條路。謝謝! – crockpotveggies

+0

修正案:我也意識到韋恩的方法在數據庫的演變過程中會更容易管理,因爲變化可以分開,但貢獻幫助我學習! – crockpotveggies

相關問題