0

看例子时试图偷懒

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 部分?

我正在从不同服务器上具有相同名称和结构的表中复制数据。如果我可以从现有表中复制结构,它将为我节省很多时间

谢谢布鲁斯

4

1 回答 1

3

答案是:不。请参阅文档:

由于 dblink 可用于任何查询,因此声明它返回记录,而不是指定任何特定的列集。这意味着您必须在调用查询中指定预期的列集——否则 PostgreSQL 将不知道会发生什么。

http://www.postgresql.org/docs/9.1/static/contrib-dblink-function.html


编辑:顺便说一句,对于表或视图,您可以获取字段名称并在第一个查询中键入:

select column_name 
from information_schema.columns
where table_name = 'your_table_or_view';

然后,您可以使用它来填写字段声明。

亚历克西斯

于 2012-05-15T07:01:05.807 回答