使用VScode的SQLtools扩展如何通过同一连接访问多个数据库?
SQLTools 同一连接下展示多个PostgreSQL数据库的实现方案
PostgreSQL原生不支持单个连接会话同时绑定多个数据库,你当前尝试在database字段填写多个数据库名的配置方式无法生效。以下是两种可实现你需求的方案:
方案1:使用SQLTools连接分组功能(推荐,无额外数据库配置)
你可以将多个数据库的连接配置归到同一个分组下,即可在侧边栏展示为同一个根节点,符合你要的simple_bank等数据库展示在同一root节点下的效果,配置示例如下:
{ "sqltools.connections": [ { "previewLimit": 50, "server": "localhost", "port": 5432, "driver": "PostgreSQL", "name": "root", "username": "sampleuser", "password": "samplepasswd", "database": "root", "group": "DataBase" }, { "previewLimit": 50, "server": "localhost", "port": 5432, "driver": "PostgreSQL", "name": "database1", "username": "sampleuser", "password": "samplepasswd", "database": "database1", "group": "DataBase" }, { "previewLimit": 50, "server": "localhost", "port": 5432, "driver": "PostgreSQL", "name": "database2", "username": "sampleuser", "password": "samplepasswd", "database": "database2", "group": "DataBase" }, { "previewLimit": 50, "server": "localhost", "port": 5432, "driver": "PostgreSQL", "name": "simple_bank", "username": "sampleuser", "password": "samplepasswd", "database": "simple_bank", "group": "DataBase" } ] }
配置后侧边栏的SQLTools列表会出现名为DataBase的根分组,展开后即可看到所有归到该分组下的数据库连接,点击即可切换访问。
方案2:使用postgres_fdw扩展实现单连接跨库访问
如果你需要在单个连接内直接查询多个数据库的内容,可以通过PostgreSQL的外部数据包装器扩展postgres_fdw将其他数据库的表映射到你默认连接的数据库中,操作步骤如下:
- 连接到你要作为主入口的数据库(比如root库),执行命令安装扩展:
CREATE EXTENSION IF NOT EXISTS postgres_fdw;
- 创建外部服务器,指向本地PostgreSQL服务:
CREATE SERVER postgres_local FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'localhost', port '5432', dbname 'simple_bank');
- 创建用户映射,将你的数据库用户映射到外部服务器的访问权限:
CREATE USER MAPPING FOR sampleuser SERVER postgres_local OPTIONS (user 'sampleuser', password 'samplepasswd');
- 导入外部数据库的表到当前库的指定schema下(比如你可以新建一个
simple_bankschema来存放映射表):
CREATE SCHEMA IF NOT EXISTS simple_bank; IMPORT FOREIGN SCHEMA public FROM SERVER postgres_local INTO simple_bank;
配置完成后,你连接root库时就能在simple_bank schema下看到对应数据库的所有表,直接执行查询即可,无需切换连接。
内容的提问来源于stack exchange,提问作者Vincent Adams
相关产品推荐
相关产品推荐

