我在服務器中有三個postgresql
數據庫:db1
,db2
,db3
。現在我想將每個數據庫中的表保存到新的數據庫dbnew
並與schemas
區分開來。這意味着該數據庫中有三種模式dbnew.db1
,dbnew.db2
,dbnew.db3
。什麼是最簡單的方法來實現它?Postgresql:將不同的數據庫複製到具有不同架構的一個數據庫中
(PS:我有傾倒數據庫的本地文件。)
我測試來自@a_horse_with_no_name答案,似乎工作,但有一個新的問題如下:
如果db1
有是postgis
的擴展名,然後我加載db1
與psql
,並將public
重命名爲db1
,然後創建一個名爲public
的新模式。我無法爲public
架構創建擴展postgis
,因爲它顯示extension postgis already exists
。但是,如果我使用命令\dx
,則表明擴展名在模式db1
中,而不在dbnew
中。即使我使用create EXTENSION postgis with schema public
它也不起作用。
解決方案非常好,可以將二進制備份到新數據庫中,速度非常快。但第二次重命名將失敗,因爲該架構已經存在。有效的方法是使用「alter table public。 set schema dbnew;」用於公共模式中的每個表。 –
aschoerk
我發現如果我使用擴展名重命名模式,並且如果我想在'public'模式中創建擴展名,則失敗。 – natsuapo