pgAdmin 4提供了导入/导出数据库服务器的功能。此功能允许用户以JSON格式导出现有数据库服务器并与其他人共享。类似地,用户可以从JSON文件导入数据库服务器。
如何使用导入/导出服务器向导
要启动导入/导出服务器向导,请浏览菜单栏上的工具,单击“导入/导出服务”选项。
步骤1

-
使用导入/导出字段选择要导入或导出的服务器组/服务器。
-
使用文件名字段选择要导入服务器的JSON文件,或在导出时创建新文件,其中要以JSON格式导出服务器。
-
使用删除所有现有服务器 ?字段指定在导入新选定的服务器之前是否删除所有现有服务器。此字段仅适用于导入服务器。
-
单击“下一步”按钮继续,或单击“X”按钮关闭向导。
步骤2

-
选择要导入或导出的服务器组/服务器。
-
单击“下一步”按钮继续,或单击“X”按钮关闭向导。
步骤3

-
在“摘要”页面上检查要导入/导出的服务器的摘要。
-
单击Finish按钮关闭向导并执行该过程。
如何使用“setup.py”使用导入/导出服务器
要使用“setup.py”脚本导出或导入服务器,则必须使用通常用于运行pgAdmin的Python解释器,以确保所需的Pythin包可用。在大多数软件包中,可以在安装目录中的Python虚拟环境中找到它。
导出服务器
要导出安装中定义的服务器,只需调用“setup.py”即可。带有“–dump servers”命令行选项,后跟所需输出文件的名称(如果需要,还可以是路径)。默认情况下,将转储桌面模式用户拥有的服务器(pgadmin4@pgadmin.org默认情况下-请参阅“config.py”中的DESKTOP_USER设置),这可以用“–user”命令行选项覆盖。
同一系统上可以有多个pgAdmin配置。要从特定的pgAdmin配置数据库文件转储服务器,可以使用“–sqlite path”选项。在桌面模式下运行pgAdmin时,也建议使用此选项。默认情况下,“config”中的SQLITE_PATH设置。
例如(在RPM安装上):要仅导出某些服务器,请使用“–servers”选项并列出一个或多个服务器ID。
/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py --dump-servers output_file.json
# or, to specify a non-default user name:
/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py --dump-servers output_file.json --user user@example.com
# to specify a pgAdmin config DB file:
/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py --dump-servers output_file.json --sqlite-path /var/lib/pgadmin/pgadmin4.db
例如:
/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py --dump-servers output_file.json --server 1 2 5
导入服务器
要导入JSON文件中定义的服务器,只需调用“setup.py”即可。带有“–load servers”命令行选项,后跟包含
服务器定义。服务器将归桌面模式用户所有(pgadmin4@pgadmin.org默认情况下-请参阅“config.py”中的DESKTOP_USER设置),这可以用“–user”命令行选项覆盖。
同一系统上可以有多个pgAdmin配置。默认行为是将导入的服务器添加到现有列表中,这可能会导致重复。这可以用“–replace”命令行选项覆盖,该选项将用新导入的服务器列表替换服务器列表。
要将服务器加载到特定的pgAdmin配置数据库文件中,可以使用“–sqlite path”选项。在桌面模式下运行pgAdmin时,也建议使用此选项。默认情况下,“config”中的SQLITE_PATH设置。
例如(在RPM安装时):
/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py --load-servers input_file.json
# or, to replace the list of servers with the newly imported one:
/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py --load-servers input_file.json --replace
# or, to specify a non-default user name to own the new servers:
/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py --load-servers input_file.json --user user@example.com
# to specify a pgAdmin config DB file:
/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py --load-servers input_file.json --sqlite-path /var/lib/pgadmin/pgadmin4.db
如果使用配置数据库中尚未存在的服务器组定义了任何服务器,则将创建所需的组。
JSON格式
导入或导出服务器时使用的JSON文件格式非常简单,只包含服务器列表和一些属性。每个服务器定义中都需要以下属性:Name、Group、Port、Username、SSLMode、MaintenanceDB以及Host、HostAddr或Service之一。
无法导入或导出密码字段。
以下示例显示了最小定义的服务器和完全定义的服务器:
{
"Servers": {
"1": {
"Name": "Minimally Defined Server",
"Group": "Server Group 1",
"Port": 5432,
"Username": "postgres",
"Host": "localhost",
"SSLMode": "prefer",
"MaintenanceDB": "postgres"
},
"2": {
"Name": "Fully Defined Server",
"Group": "Server Group 2",
"Host": "host.domain.com",
"HostAddr": "192.168.1.2",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"Role": "my_role_name",
"SSLMode": "require",
"Comment": "This server has every option configured in the",
"DBRestriction": "live_db test_db",
"PassFile": "/path/to/pgpassfile",
"SSLCert": "/path/to/sslcert.crt",
"SSLKey": "/path/to/sslcert.key",
"SSLRootCert": "/path/to/sslroot.crt",
"SSLCrl": "/path/to/sslcrl.crl",
"SSLCompression": 1,
"Shared": false,
"BGColor": "#ff9900",
"FGColor": "#000000",
"Service": "postgresql-10",
"Timeout": 60,
"UseSSHTunnel": 1,
"TunnelHost": "192.168.1.253",
"TunnelPort": 22,
"TunnelUsername": "username",
"TunnelAuthentication": 0
}
}
}
结论
使用导入/导出服务器向导或命令行选项将现有数据库服务器导入/导出到pgAdmin实例中,例如,在迁移到新的pgAdmin安装或与同事共享服务器定义时。
关于作者

Akshay Joshi是EDB的首席软件架构师。他于2010年加入,主要从事PostgreSQL的监控工具。自2011年以来,他一直积极参与pgAdmin,是pgAdmin开源项目的核心提交人和发布经理之一。
原文标题:Import Export Servers in pgAdmin 4
原文作者:Akshay Joshi
原文链接:https://www.enterprisedb.com//blog/import-export-servers-pgadmin-4




