Este tópico descreve como usar o recurso CLONE TABLE para migrar dados entre projetos do MaxCompute na mesma região. O conteúdo abrange dois cenários: migração de dados entre projetos da mesma conta Alibaba Cloud e migração entre projetos de contas Alibaba Cloud diferentes.
Introdução ao recurso
O recurso CLONE TABLE permite copiar dados eficientemente de uma tabela source para uma tabela de destino. Após a cópia, valide os dados para garantir sua precisão. Por exemplo, execute o comando selecione para visualizar os dados da tabela ou o comando desc para verificar o tamanho dela.
Limites
Compatibilidade de schema: O schema da tabela de destino deve ser compatível com o da tabela source.
Tipos de tabela: Suporta tabelas particionadas, não particionadas e clusterizadas.
-
Limite de partições:
Se a tabela de destino existir: Máximo de 10.000 partições por operação.
Se a tabela de destino não existir: Sem limite de partições (operação atômica).
Entre regiões/clusters: Não há suporte para replicação de dados entre projetos do MaxCompute em regiões ou clusters diferentes.
Tabelas externas: Sem suporte.
Evolução de schema: Sem suporte para tabelas que passaram por evolução de schema (como adição ou remoção de colunas).
Formato do comando
clone table <[<src_project_name>.]<src_table_name>> [partition(<pt_spec>), ...] to <[<dest_project_name>.]<dest_table_name>> [if exists [overwrite | ignore]] ;
Para obter mais informações sobre os parâmetros e exemplos de uso, consulte CLONE TABLE.
Migração de dados entre projetos diferentes da mesma conta Alibaba Cloud na mesma região
-
Ao utilizar uma conta Alibaba Cloud, execute o comando clone diretamente no projeto source.
set odps.namespace.schema=false; --Clone the table from proejctA to projectB. clone TABLE projectA.<tablename> to projectB.<tablename> IF EXISTS OVERWRITE; -
Caso utilize um usuário do Resource Access Management (RAM), confirme se ele possui a permissão
SELECTna tabela source dentro do projeto source, além das permissõesCreateTableeCreateInstacneno projeto de destino. Após conceder as permissões, execute o comando clone. Para mais detalhes sobre autorização, consulte .
Migração de dados entre projetos de contas Alibaba Cloud diferentes na mesma região
Para migrar dados entre projetos de contas Alibaba Cloud distintas, adicione a conta Alibaba Cloud do proprietário do projeto de destino ao projeto source. Em seguida, conceda à conta as permissões CreateTable e CreateInstacne no projeto source. Por fim, use o recurso CLONE TABLE para migrar dados entre os projetos.
-
Adicione a conta Alibaba Cloud do proprietário do projeto de destino ao projeto source e conceda as permissões necessárias.
--Enter the source project projectA. use projectA; --Add the Alibaba Cloud account of the destination project (projectB) owner (projectB_owner@aliyunid.com) to the source project (projectA). add user ALIYUN$projectB_owner@aliyunid.com; --Grant the CreateTable and CreateInstacne permissions on the source project projectA to the user ALIYUN$projectB_owner@aliyunid.com. grant CreateTable,CreateInstance on project projectA to user ALIYUN$projectB_owner@aliyunid.com; --Grant the Select permission on the source table to the user ALIYUN$projectB_owner@aliyunid.com. grant Select on table <tablename> to user ALIYUN$projectB_owner@aliyunid.com;Para mais informações sobre como adicionar uma conta Alibaba Cloud, consulte Add an Alibaba Cloud account user (project level). Para detalhes sobre autorização, consulte Grant permissions to a user.
-
Execute o comando clone no projeto de destino.
Como operações entre contas são sempre executadas por uma conta Alibaba Cloud, essa conta já possui todas as permissões de dados no projeto de destino por padrão. Nenhuma autorização adicional é necessária.
use projectB; --Clone the table from proejctA to projectB. clone TABLE projectA.<tablename> to projectB.<tablename> IF EXISTS OVERWRITE; -
Confirme se os dados da tabela foram migrados com sucesso no projeto de destino.
select * from <tablename> limit 2;ImportanteApós concluir a migração de dados, remova imediatamente a conta Alibaba Cloud do proprietário do projeto de destino do projeto source para garantir a segurança dos dados. Para mais informações sobre como remover uma conta, consulte Delete an Alibaba Cloud account user (project level).