本文為您介紹如何通過CLONE TABLE功能實現同Region的MaxCompute專案資料移轉,包含兩種使用情境:同Region同雲帳號內不同專案的資料移轉和同Region不同雲帳號間的專案資料移轉。
CLONE TABLE功能介紹
CLONE TABLE功能可以高效地將源表中的資料複製到目標表中。將資料複製到目標表之後,建議您執行資料驗證以確保複製後資料的準確性,例如執行select
命令查看錶的資料、執行desc
命令查看錶的大小。
使用限制
目標表與源表的Schema需要相容。
支援分區表和非分區表,支援對聚簇表使用
clone table
命令複製表資料。目標表已存在時,一次性複製分區的數量上限為10000個。
目標表不存在時,無分區數量限制,滿足原子性。
對同一個非分區表或分區表的同一個分區,執行
clone table
命令的次數不能超過6次。不支援在跨地區的MaxCompute專案之間使用
clone table
命令複製表資料。不支援對外部表格使用
clone table
命令複製表資料。
命令格式
clone table <[<src_project_name>.]<src_table_name>> [partition(<pt_spec>), ...] to <[<dest_project_name>.]<dest_table_name>> [if exists [overwrite | ignore]] ;
參數詳細介紹與使用樣本請參見CLONE TABLE。
同Region同雲帳號內不同專案的資料移轉
若阿里雲帳號操作,則直接在源專案執行複製命令即可。
set odps.namespace.schema=false; --將proejctA中的表複製至projectB; clone TABLE projectA.<tablename> to projectB.<tablename> IF EXISTS OVERWRITE;
若RAM使用者操作,需要確認操作者是否擁有資料來源專案內源表的
SELECT
許可權及目標專案的CreateTable
、CreateInstacne
許可權,擁有許可權後執行複製命令即可。授權詳情請參見。
同Region不同雲帳號間的資料移轉
跨帳號進行同步資料,需要所將目標專案Owner阿里雲賬戶添加至資料來源專案空間,並且賦予源專案的CreateTable
、CreateInstacne
許可權,最後通過Clone Table功能實現同Region跨帳號資料移轉。
在遷移資料表源專案添加目標專案Owner的阿里雲帳號並賦予許可權:
--進入資料來源專案projectA; use projectA; --將目標專案(projectB)Owner的阿里雲帳號(projectB_owner@aliyunid.com)添加至源專案空間(projectA); add user ALIYUN$projectB_owner@aliyunid.com; --賦予源專案的CreateTable、CreateInstacne許可權 grant CreateTable,CreateInstance on project projectA to user ALIYUN$projectB_owner@aliyunid.com; --賦予源表的Select許可權 grant Select on table <tablename> to user ALIYUN$projectB_owner@aliyunid.com;
添加阿里雲帳號詳情請參見添加阿里雲帳號使用者(專案層級),授權詳情請參見直接為使用者授權。
在目標專案執行複製命令。
由於跨雲帳號操作一定是由阿里雲帳號進行操作,因此預設擁有目標專案內所有資料許可權,無需單獨授權。
use projectB; --將proejctA中的表複製至projectB; clone TABLE projectA.<tablename> to projectB.<tablename> IF EXISTS OVERWRITE;
在目標專案確認表資料是否遷移成功。
select * from <tablename> limit 2;
重要建議完成資料移轉後,及時將目標專案Owner阿里雲帳號從資料來源專案中移除,以保證資料安全。移除操作詳情請參見刪除阿里雲帳號使用者(專案層級)。