要从另一个数据库中选择,我尝试使用Postlink的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 * FROM
dblink ('dbname = bd_name port = 5432 host = 10.6.6.6 user = username password = password',
'SELECT * FROM sch_schema.table');
但这不起作用。我该如何解决这个问题?
答案 0 :(得分:1)
你不能这样做,因为PostgreSQL必须在查询计划时知道列的内容。
但指定列不应该是一个问题,无论如何,在大多数情况下,最好避免在SQL中使用“*
”。
答案 1 :(得分:1)
DBLink返回通用数据行类型。关于此的一个令人讨厌的事情是,为了使用它,您需要指定输出结构。也许在PostgreSQL的未来版本中,缺乏对通用行类型的内省的这种限制将被照射。缺乏内省不仅是DbLink的问题,也是其他泛型行类型返回函数的问题,如TableFunc交叉表函数