Postgresql 从表中选择*作为表数据库链接
要从另一个数据库中进行选择,我尝试使用Postgres的dblink或fdw扩展,如下所示:Postgresql 从表中选择*作为表数据库链接,postgresql,postgresql-9.3,dblink,Postgresql,Postgresql 9.3,Dblink,要从另一个数据库中进行选择,我尝试使用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, co
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');
但这是行不通的。如何解决这个问题?您不能这样做,因为PostgreSQL必须在查询计划时知道列将是什么
但是指定列应该不会有问题,而且在大多数情况下,避免SQL中的“
*
”是一个很好的做法。DBLink返回一个通用的数据行类型。其中一个恼人的事情是,为了使用它,您需要指定输出结构。也许在PostgreSQL的未来版本中,这种缺乏泛型行类型内省的限制将被忽略。缺乏内省不仅是DbLink的问题,也是其他通用行类型返回函数(如TableFunc交叉表函数)的问题?。任何有足够声誉的人都可以结束一个问题,但这并不意味着我做了。对于FDWs,有来自PostgreSQL 9.5+的命令,但在dblink
中没有类似的命令。谢谢@pozs的建议