我希望PostgreSQL專家可以幫助解決這個問題;)爲了避免責任問題,我們被要求用我們的數據庫模式中的「客戶端」替換「患者」一詞的所有實例。但是,我們使用PGAdmin。如何大量替換PostgreSQL數據庫模式中的結構?
The catch:我們的數據庫「guy」目前正在度假。
鑑於這不是一個小的改變,改變模式和最小化中斷的最有效和最有效的方法是什麼? PGAdmin做到這一點有效嗎?還是我需要去SQL路線?
謝謝!
我希望PostgreSQL專家可以幫助解決這個問題;)爲了避免責任問題,我們被要求用我們的數據庫模式中的「客戶端」替換「患者」一詞的所有實例。但是,我們使用PGAdmin。如何大量替換PostgreSQL數據庫模式中的結構?
The catch:我們的數據庫「guy」目前正在度假。
鑑於這不是一個小的改變,改變模式和最小化中斷的最有效和最有效的方法是什麼? PGAdmin做到這一點有效嗎?還是我需要去SQL路線?
謝謝!
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;
數據庫有使用它們的程序,而這些程序通常與模式中的名稱綁定。您的客戶程序是否可以自動適應模式更改?
謝謝!是的,我們可以使我們的客戶端軟件適應模式更改,幸運的是,不需要更改數據,只需要模式。這將在本地進行測試,然後通過數據庫演進和GIT進行推送。 – crockpotveggies
注意視圖,存儲函數和觸發器中使用的表名稱和列名稱。 – Skrol29
如果你擁有的奢侈品,一個非常簡單的方法是用sed
和pg_dump
:
pg_dump -s [arguments to connect to your database] | sed 's/patient/client/g' > new_structure.sql
這(可能)讓你有「病人」的每個實例更改爲「客戶端的新模式, 「但它對於你的數據並沒有太大的作用,所以你必須單獨轉儲和加載數據,這可能無法輕鬆完成。韋恩的答案是更好的,但無論哪種方式,你可能有大量的應用程序更改,以協調在同一時間。
如果可能的話,我會延遲,這不是一個你應該輕視的改變。
幸運的是,我可以在本地測試一切,然後使用GIT推送更改。我同意我可能會採用韋恩的方法,但如果我對PGSQL更有經驗,我可能會走這條路。謝謝! – crockpotveggies
修正案:我也意識到韋恩的方法在數據庫的演變過程中會更容易管理,因爲變化可以分開,但貢獻幫助我學習! – crockpotveggies
_seems_就像一個尖尖的事情必須做的事情。我希望有人有一個很好的答案,但我比這個答案更吸引我。 –
@WayneConrad我們的客戶之一在開發中有很大的參與度,並被用作參考案例。鑑於他們的服務爲癌症治療提供運輸服務,他們要求我們更改所有術語代碼和文件,以便與實際醫療實踐無關。 – crockpotveggies
@WayneConrad p.s.愛參考dilbert;) – crockpotveggies