数据共享SQL
实例开通数据共享后,还需要通过SQL创建共享并授权,才能实现实例间的数据共享。本文介绍AnalyticDB PostgreSQL版Serverless模式数据共享相关SQL操作。
注意事项
创建Share
该语句用于在数据共享的源库中创建Share。
CREATE DATASHARE <share_name>;
参数说明
share_name:需要创建的Share的名称。长度为1~90个字符。
使用示例
CREATE DATASHARE s01;
删除Share
该语句用于删除数据库中的Share。Share被删除后,目标库将无法访问共享的数据。
DROP DATASHARE <share_name>;
参数说明
share_name:需要删除的Share的名称。
使用示例
DROP DATASHARE s01;
Share授权
该语句用于授权目标库对源库的Share的订阅权限。目标库需要取得Share的权限后才能进行订阅操作。
GRANT USAGE ON DATASHARE <share_name> TO DATABASE <target_id>;
参数说明
share_name:需要授权的Share的名称。
target_id:目标库的ID,格式为UUID形式。如何获取数据库的ID,请参见查询数据库ID。
使用示例
GRANT USAGE ON DATASHARE s01 TO DATABASE "c227516c-3802-4974-86e9-53**********";
回收Share权限
该语句用于回收目标库订阅Share的权限。回收权限后,目标库将无法访问共享的数据。
REVOKE USAGE ON DATASHARE <share_name> FROM DATABASE <target_id>;
参数说明
share_name:需要回收的Share的名称。
target_id:目标库的ID,格式为UUID形式。如何获取数据库的ID,请参见查询数据库ID。
使用示例
REVOKE USAGE ON DATASHARE s01 FROM DATABASE "c227516c-3802-4974-86e9-53**********";
添加表
该语句用于将表添加到Share中。添加表后,即可在订阅了该Share的目标库中查看该表。
ALTER DATASHARE <share_name> ADD TABLE <table_name>;
参数说明
share_name:需要添加的Share的名称。
table_name:需要添加到Share中的表。
使用示例
ALTER DATASHARE s01 ADD TABLE t1_1;
移除表
该语句用于将表从Share中移除。
ALTER DATASHARE <share_name> REMOVE TABLE <table_name>;
参数说明
share_name:需要移除的Share的名称。
table_name:需要从Share中移除的表。
使用示例
ALTER DATASHARE s01 REMOVE TABLE t1_1;
订阅Share
该语句用于在目标库上订阅源库的Share。目标库要查询共享的数据,需要取得源库Share的授权并订阅Share。
IMPORT DATASHARE <share_name> [AS <local_share_name>] FROM DATABASE <source_id>;
参数说明
share_name:需要订阅的Share的名称。
local_share_name:为订阅的Share设置别名。
source_id:源库ID,为UUID形式。如何获取数据库的ID,请参见查询数据库ID。
使用示例
IMPORT DATASHARE s01 AS s01a FROM DATABASE "c227516c-3802-4974-86e9-53**********";
取消订阅Share
该语句用于取消订阅Share。取消订阅后,目标库将无法访问共享的数据。
DROP DATASHARE <share_name>;
参数说明
share_name:需要取消订阅的Share的名称。
使用示例
DROP DATASHARE s01;
查询数据
该语句用于在目标库中查询数据共享的数据。
SELECT * FROM <share_name.schema_name.table_name>;
参数说明
share_name.schema_name.table_name:目标端查询的共享表名字,需为三段式表示:
share_name:Share的本地别名(若没有设置别名可使用Share的名称)。
schema_name:共享表所在源库的Schema的名称。
table_name:共享表的表名。
使用示例
SELECT * FROM s01.public.t1_1;
查询数据库ID
查询数据库的ID,ID为UUID格式。
查询数据库ID的语句仅支持查询当前数据库的ID,如需查询其他数据库的ID,请切换到对应数据库中执行查询语句。
SELECT current_database_uuid();