【问题标题】:Postgresql dblinkPostgresql 数据库链接
【发布时间】:2012-05-22 15:49:24
【问题描述】:

看例子时尽量偷懒

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

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

谢谢 布鲁斯

【问题讨论】:

    标签: postgresql dblink


    【解决方案1】:

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

    由于 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';
    

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

    亚历克西斯

    【讨论】:

    • 可以,但你可以作为 AS 来做吗(从 information_schema.columns 中选择 column_name,其中 table_name = 'your_table_or_view')
    • 不,你不能直接这样做。但是您所要做的就是编写一个简单的 PLPGSQL 函数来构建您的查询字符串并执行它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2020-08-05
    相关资源
    最近更新 更多