支持Azure DB for Postgres服务器中的跨数据库查询

时间:2019-04-27 13:49:06

标签: postgresql azure

Azure DB for Postgres Server是否支持跨数据库查询? Azure SQL数据库不支持跨数据库查询,而Azure SQL托管实例和弹性池支持跨数据库查询!

1 个答案:

答案 0 :(得分:0)

如果在Azure Postgres服务器的“连接安全性”下禁用了“拒绝公共网络访问”并启用了“允许对其他Azure资源的访问”,则可以使用dblink扩展名:

CREATE EXTENSION dblink;

SELECT dblink_connect('[connection_alias]','host=[azure_pg_hostname] port=5432
dbname=[other_db_name] user=[username]@[azure_pg_hostname] password=[password] sslmode=require');

SELECT * FROM dblink('[connection_alias]', 'select [field1], [field2] from public.[remote_table_name]') 
AS t([field1] [data type], [field2] [data type]);

或外部数据包装扩展名:

CREATE EXTENSION postgres_fdw;

CREATE SERVER [connection_alias]
FOREIGN DATA WRAPPER postgres_fdw  
OPTIONS (host '[azure_pg_hostname]', dbname '[other_db_name]', port '5432');

CREATE USER MAPPING FOR ([user_name] | CURRENT_USER)
SERVER [connection_alias]
OPTIONS (user '[user_name]@[azure_pg_hostname]', password '[password]');

CREATE FOREIGN TABLE [local_table_name] ( 
[field1] [data type], [field2] [data type]
)
SERVER [connection_alias]
OPTIONS (schema_name 'public', table_name '[remote_table_name]');

SELECT * from [local_table_name];