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 交叉表函数)的问题
从另一个数据库到 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 交叉表函数)的问题