我們正在遷移一些產品,其中一個步驟是遷移產品資料庫。
我的步驟是
匯出現有的資料庫
<pg_dump --no-owner --clean --blobs --no-privileges --U dbuser old_dbname -f bkpfile.sql匯入轉儲到一個不同的資料庫
psql -U dbuser2 new_dbname -f bkpfile.sql
問題是舊的資料庫包含陳述句 COMMENT ON DATABASE old_dbname IS 'Rxxxxx';
新的資料庫用戶必須沒有舊資料庫的權限,而且我認為在轉儲中參考舊資料庫的名字是不好的。
有沒有一種方法可以在沒有COMMENT ON DATABASE陳述句的情況下創建一個完整的DB dump?
編輯:
PostgreSQL 9.6 重現的步驟:
CREATE DATABASE testdb;
COMMENT ON DATABASE testdb IS 'some comment';
CREATE TABLE xx (id int) 。
然后轉儲資料庫,轉儲包含對資料庫名稱的參考 COMMENT ON DATABASE testdb IS 'some comment';這就阻止了將備份匯入到新的資料庫中
pg_dump --no-owner --clean --blobs --no-privileges testdb
我們可以手動洗掉評論陳述句或使用不同的工具(grep)過濾評論,但手動干預或基于文本的過濾在備份的基礎上可能會導致資料損壞。
uj5u.com熱心網友回復:
這個注釋只在PostgreSQL v11以下的版本中被轉儲。參見發布說明中的這個條目:
無論如何,9.6將很快失去支持,所以這是一個升級的好機會。pg_dump和pg_restore,在沒有
--create的情況下,不再轉儲/恢復資料庫級別的注釋和安全標簽;這些現在被當作資料庫的屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/307996.html
標籤:
上一篇:在Postgresql中,CStringGetTextDatum()和CStringGetDatum()有什么區別?
