暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在pgAdmin 4中导入导出服务器

原创 eternity 2022-09-26
2268

pgAdmin 4提供了导入/导出数据库服务器的功能。此功能允许用户以JSON格式导出现有数据库服务器并与其他人共享。类似地,用户可以从JSON文件导入数据库服务器。

如何使用导入/导出服务器向导

要启动导入/导出服务器向导,请浏览菜单栏上的工具,单击“导入/导出服务”选项。

步骤1

image.png

  • 使用导入/导出字段选择要导入或导出的服务器组/服务器。

  • 使用文件名字段选择要导入服务器的JSON文件,或在导出时创建新文件,其中要以JSON格式导出服务器。

  • 使用删除所有现有服务器 ?字段指定在导入新选定的服务器之前是否删除所有现有服务器。此字段仅适用于导入服务器。

  • 单击“下一步”按钮继续,或单击“X”按钮关闭向导。

步骤2

image.png

  • 选择要导入或导出的服务器组/服务器。

  • 单击“下一步”按钮继续,或单击“X”按钮关闭向导。

步骤3

image.png

  • 在“摘要”页面上检查要导入/导出的服务器的摘要。

  • 单击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安装或与同事共享服务器定义时。

关于作者

微信图片_20220923144532.jpg

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论