Select * 来自 table 作为 table dblink

Select * From table As a table dblink

从另一个数据库到 select 我尝试使用 Postgres 的 dblink 或 fdw 扩展,如下所示:

CREATE EXTENSION dblink;

SELECT * FROM 
dblink ('dbname = bd_name port = 5432 host = 10.6.6.6 user = username password = password', 
'SELECT id, code FROM sch_schema.table') 
AS new_table(id INTEGER, code character varying);

当我指定我想要 select 的列时,这工作正常 select。

我的问题是:如何 select 所有列

我试过这个:

SELECT * FROM 
dblink ('dbname = bd_name port = 5432 host = 10.6.6.6 user = username password = password', 
'SELECT * FROM sch_schema.table');

但这不起作用。我该如何解决这个问题?

你不能那样做,因为 PostgreSQL 必须在查询计划时知道列是什么。

但是指定列应该不是问题,无论如何,在大多数情况下最好避免 SQL 中的“*”。

DBLink returns 一种通用数据行类型。关于此的烦人的事情之一是为了使用它,您需要指定输出结构。也许在 PostgreSQL 的未来版本中,这种缺乏通用行类型内省的限制将被消除。缺乏内省不仅是 DbLink 的问题,也是其他通用行类型返回函数(例如 TableFunc 交叉表函数)的问题