全部產品
Search
文件中心

AnalyticDB:資料共用SQL

更新時間:Aug 27, 2024

執行個體開通資料共用後,還需要通過SQL建立共用並授權,才能實現執行個體間的資料共用。本文介紹AnalyticDB PostgreSQL版Serverless模式資料共用相關SQL操作。

注意事項

  • 源庫和目標庫所屬的執行個體在同一地區下,且已加入資料共用。如何將執行個體加入資料共用,請參見開通或關閉資料共用

  • 目前僅支援表層級資料共用。

  • 一個資料共用(Share)中最多可包含1000張表。

  • 當源執行個體中有多個Share時,目標庫只能訂閱其中一個Share。

  • 目標庫無法對共用的表進行寫操作。

  • 共用的表無法進行DDL操作,如果需要進行DDL操作,需要取消該表的共用。如何取消表的共用,請參見移除表

  • AnalyticDB PostgreSQL版Serverless模式目前都預設開通了索引功能,可以通過設定GUC參數的方式來強制寫入OSS。

建立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();