本文介紹如何通過INSERT外表方式將AnalyticDB for MySQL數倉版資料匯出到MaxCompute分區表。
前提條件
例如通過表操作語句,在MaxCompute中建立以下表。如果您已經有目標資料表,請跳過該步驟。
說明匯出資料到MaxCompute分區表時,需要明確指定待寫入的分區,不支援同時匯出到多個分區,您可以通過執行多個SQL的方式實現將資料匯出到多個MaxCompute分區。MaxCompute最高支援6級分區,其他多級分區的操作步驟類似。
一級分區表
CREATE TABLE IF NOT EXISTS odps_table ( uid STRING ) PARTITIONED BY (ds STRING) LIFECYCLE 3;二級分區表
CREATE TABLE IF NOT EXISTS odps_table ( uid STRING ) PARTITIONED BY (ds STRING,other STRING) LIFECYCLE 3;
根據AnalyticDB MySQL快速入門,完成建立數倉版叢集、設定白名單、建立帳號、建立資料庫和表等準備工作。
如果您的AnalyticDB for MySQL叢集是彈性模式,您需要在集群資訊頁面的網路資訊地區,開啟啟用ENI網絡的開關。

匯出到MaxCompute一級分區表
本樣本將AnalyticDB for MySQL數倉版的adb_table表中的資料匯出到MaxCompute的odps_table一級分區表中。
串連目標AnalyticDB for MySQL數倉版叢集。詳細操作步驟,請參見串連叢集。
建立一張外表映射到MaxCompute的目標資料表。
CREATE TABLE odps_external_table ( uid string, ds string ) ENGINE='ODPS' TABLE_PROPERTIES='{ "endpoint":"http://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api", "accessid":"LTAdjison5uw8chp****", "accesskey":"HlClencufhdnmJjBYBJ****", "project_name":"test", "table_name":"odps_table", "partition_column":"ds" }'參數
說明
ENGINE=’ODPS’
表示該表是外部表格,使用的儲存引擎是MaxCompute。
TABLE_PROPERTIES
用於告知AnalyticDB for MySQL如何訪問MaxCompute,並向其寫入資料。
endpoint
MaxCompute的
EndPoint(網域名稱節點)。說明目前僅支援AnalyticDB for MySQL通過MaxCompute的VPC網路Endpoint訪問MaxCompute。
如何查看MaxCompute的EndPoint,請參見Endpoint。
accessid
您在訪問MaxCompute目標資料表時所持有的AccessKey ID。
accesskey
您在訪問MaxCompute目標資料表時所持有的AccessKey Secret。
project_name
MaxCompute中目標資料表所在的工作空間名。
table_name
MaxCompute中目標資料表的表名。
partition_column
分區欄位。
將資料從AnalyticDB for MySQL外表匯出到MaxCompute的資料表一級分區表。
說明adb_table_column不包含partition裡面的欄位。insert [overwrite] into odps_external_table partition(ds='20200401') select [adb_table_column, ...] from adb_table [where ...]
匯出到MaxCompute二級分區表
本樣本將AnalyticDB for MySQL數倉版的adb_table表中的資料匯出到MaxCompute的odps_table二級分區表中。
串連目標AnalyticDB for MySQL數倉版叢集。詳細操作步驟,請參見串連叢集。
建立一張外表映射到MaxCompute的資料表。
CREATE TABLE odps_external_table ( uid string, ds string, other string) ENGINE='ODPS' TABLE_PROPERTIES='{ "endpoint":"http://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api", "accessid":"LTAdjison5uw8chp****", "accesskey":"HlClencufhdnmJjBYBJ****", "project_name":"test", "table_name":"odps_table", "partition_column":"ds,other" }'將資料從AnalyticDB for MySQL外表匯出到MaxCompute資料表二級分區表。
說明adb_table_column不包含partition裡面的欄位。insert [overwrite] into odps_external_table partition(ds='20200401',other='hangzhou') select [adb_table_column, ...] from adb_table [where ...]