Postgresql数据库链接
在看一个例子时试着偷懒Postgresql数据库链接,postgresql,dblink,Postgresql,Dblink,在看一个例子时试着偷懒 SELECT realestate.address, realestate.parcel, s.sale_year, s.sale_amount, FROM realestate INNER JOIN dblink('dbname=somedb port=5432 host=someserver user=someuser password=somepwd',
SELECT realestate.address, realestate.parcel, s.sale_year, s.sale_amount,
FROM realestate INNER JOIN
dblink('dbname=somedb port=5432 host=someserver
user=someuser password=somepwd',
'SELECT parcel_id, sale_year,
sale_amount FROM parcel_sales')
AS s(parcel_id char(10),sale_year int, sale_amount int)
有没有办法从表中填写AS部分
我正在从不同服务器上具有相同名称和结构的表复制数据。
如果我可以从现有表中复制结构,这将节省我很多时间
谢谢
Bruce答案是:没有。请参阅文档: 因为dblink可以用于任何查询,所以它被声明为返回记录,而不是指定任何特定的列集。这意味着您必须在调用查询中指定预期的列集,否则PostgreSQL将不知道预期的内容 编辑:顺便说一下,对于表或视图,您可以在第一次查询中获取字段名称和类型:
select column_name
from information_schema.columns
where table_name = 'your_table_or_view';
然后可以使用它来填充字段声明
亚历克西斯回答是:没有。见文件: 因为dblink可以用于任何查询,所以它被声明为返回记录,而不是指定任何特定的列集。这意味着您必须在调用查询中指定预期的列集,否则PostgreSQL将不知道预期的内容 编辑:顺便说一下,对于表或视图,您可以在第一次查询中获取字段名称和类型:
select column_name
from information_schema.columns
where table_name = 'your_table_or_view';
然后可以使用它来填充字段声明
Alexis是,但您可以从信息模式中选择列名称。表名称='您的表或视图'的列不,您不能直接这样做。但您所要做的就是编写一个简单的PLPGSQL函数来构建查询字符串并执行它。是的,但您可以从信息模式中选择列名称。表名称为“您的表”或“视图”的列不,您不能直接这样做。但您所要做的就是编写一个简单的PLPGSQL函数来构建查询字符串并执行它。