Pgadmin

如何將我的伺服器列表從 pgAdmin 3 導入到 pgAdmin 4?

  • January 19, 2018

我想知道是否有任何方法可以將我的伺服器列表從 pgAdmin 3 導入到 pgAdmin 4(這樣我就不必再一個一個地創建伺服器)。

對於 C:\Users%user%\AppData\Roaming\pgAdmin 中的 Windows,您可以找到 pgadmin4.db,這是 pgAdmin4 保存其配置的位置。它是 SQLite 格式 3,您可以使用 SQLite 瀏覽器打開它並將伺服器插入伺服器表,然後保存並將它們添加到 pgAdmin4。請注意,密碼是加密保存的,因此請留空以便稍後輸入。現在您可以製作 sql 腳本,從 pgAdmin III 讀取系統資料庫導出並插入到表中以實現完全自動化的過程。

在 linux 下(在我的例子中是 Ubuntu 16.04,但它也必須在其他系統上),你會.pgadmin3在你的主目錄中找到一個文件。在這個配置文件中有類似的條目

[Servers/1]
Server=dezso.com
HostAddr=
Description=random
Service=
ServiceID=
DiscoveryID=
Port=5432
StorePwd=false
Rolename=
Restore=true
Database=postgres
Username=dezso
...

上面的“伺服器”部分是指伺服器組,需要注意這一點。

通過一些努力,您可以以合適的格式從中提取必要的數據(它甚至可以是一堆INSERT語句,見下文)。

在您的主目錄下,您將找到一個pgadmin4.db文件(確切位置可能取決於您安裝 pgAdmin4 的方式)。這是一個 SQLIte 3 數據庫(如另一個答案中所述),其中有一個server表:

sqlite> .schema server
CREATE TABLE server (
       id INTEGER NOT NULL,
       user_id INTEGER NOT NULL,
       servergroup_id INTEGER NOT NULL,
       name VARCHAR(128) NOT NULL,
       host VARCHAR(128) NOT NULL,
       port INTEGER NOT NULL CHECK (port >= 1024 AND port <= 65535),
       maintenance_db VARCHAR(64) NOT NULL,
       username VARCHAR(64) NOT NULL,
       ssl_mode VARCHAR(16) NOT NULL CHECK (
           ssl_mode IN (
               'allow', 'prefer', 'require', 'disable', 'verify-ca', 'verify-full'
               )),
       comment VARCHAR(1024), password TEXT(64), role text(64), discovery_id TEXT, hostaddr TEXT(1024), db_res TEXT, passfile TEXT, sslcert TEXT, sslkey TEXT, sslrootcert TEXT, sslcrl TEXT, sslcompression INTEGER default 0, bgcolor TEXT(10), fgcolor TEXT(10),
       PRIMARY KEY (id),
       FOREIGN KEY(user_id) REFERENCES user (id),
       FOREIGN KEY(servergroup_id) REFERENCES servergroup (id)
   );

您必須首先創建伺服器組,最好從 UI 完成,因為它會告訴您user_id使用INSERT INTO server ....

引用自:https://dba.stackexchange.com/questions/143347