執行個體開通資料共用後,還需要通過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();