在T-SQL中,有EXECUTE AT函数对链接服务器执行.有没有办法对Postgre中的链接服务器进行相同的调用? 如果我是正确的,那么就是这样的:

EXEC[链接服务器名称].[数据库]...

我试着在谷歌上搜索,但找不到合适的答案

推荐答案

在PostgreSQL中,您可以使用dblink扩展名或通过设置外部数据包装器(FDW)对其他数据库或服务器执行远程查询.以下是如何实现这一点的方法:

Using the 100 Extension:

  1. 确保安装了dblink分机.您可以使用以下命令进行安装:

    CREATE EXTENSION dblink;
    
  2. 要在远程服务器上执行查询,可以使用dblink个函数.下面是一个基本的例子:

    SELECT *
    FROM dblink('dbname=myremotedb host=myremotehost user=myuser password=mypassword', 'SELECT * FROM remote_table') AS t(id int, name text);
    

    myremotedbmyremotehostmyusermypasswordremote_table替换为您特定的远程数据库信息和查询.

Using Foreign Data Wrappers (FDW):

  1. PostgreSQL支持外部数据包装器(FDW),它允许您连接和查询远程数据库,就像它们是本地数据库一样.

  2. 首先,创建代表您的远程服务器的外部服务器:

    CREATE SERVER myserver
    FOREIGN DATA WRAPPER postgres_fdw
    OPTIONS (host 'myremotehost', dbname 'myremotedb');
    
  3. 接下来,为远程服务器上的用户创建用户映射:

    CREATE USER MAPPING FOR local_user
    SERVER myserver
    OPTIONS (user 'remote_user', password 'remote_password');
    
  4. 创建表示远程表的外部表:

    CREATE FOREIGN TABLE my_remote_table (
        id int,
        name text
    )
    SERVER myserver
    OPTIONS (table_name 'remote_table');
    
  5. 现在,您可以像查询本地表一样查询远程表:

    SELECT * FROM my_remote_table;
    

myserverlocal_userremote_userremote_passwordmyremotehostmyremotedbremote_table替换为您的特定详细信息.

这些方法允许您在PostgreSQL中执行远程查询,类似于在SQL Server中使用链接服务器时的T-SQL EXECUTE AT函数.

Postgresql相关问答推荐

PostgreSQL:函数结果表内冲突(...)上的";中的字段名称

为什么更新不设置较晚的结束时间?

在PostGreSQL中获取最近日期的项目

将整数(以毫秒为单位的epoch时间)转换为PrimitiveDateTime

在 Postgresql 中实现自定义运算符时出错

Postgres 函数 now() 返回不正确的时区偏移量

使用包含重复元素的数组 Select 重复值

PostgreSQL unnest 与空数组

在 Ubuntu 11.04 服务器中启用对 postgresql 的 PHP 支持

是否有 postgres CLOSEST 运算符?

如何 Select 列值为空的行?

如何使用字符串作为 PostgreSQL 咨询锁的键?

Sidekiq - 无法在 5.000 秒内获得数据库连接

为 Django Postgres 连接强制 SSL

从 PostgreSQL 中的时间戳获取日期

如何正确索引多对多关联表?

docker postgres 无法从指定端口启动

使用 Postgresql 在过滤器中制作 Sqlalchemy 使用日期

与 iexact 一起使用时,Django get_or_create 无法设置字段

如何查询前 10 行,下一次从表中查询其他 10 行