導出至MaxCompute
本文介紹如何通過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 ...]