Use o acesso a dados entre projetos para migrar dados entre projetos do MaxCompute em regiões diferentes, na mesma conta Alibaba Cloud ou em contas distintas.
Limitações
Esta solução oferece suporte à migração de dados de projetos do MaxCompute apenas entre regiões na China continental.
Migração para projetos na mesma conta
Migre os dados da tabela de um projeto de origem (projectA) para um projeto de destino (projectB) quando ambos pertencerem à mesma conta Alibaba Cloud.
-
Como proprietário da conta Alibaba Cloud, crie a tabela de destino diretamente no projeto de destino:
Criar uma tabela e copiar dados
-- Switch to the destination project, projectB. use projectB; set odps.namespace.schema=false; -- Create a new table based on the source table in projectA and copy the data. create table [if not exists] <table_name> [lifecycle <days>] as select * from projectA.<table_name>;Criar uma tabela primeiro e depois copiar os dados
-- Switch to the destination project, projectB. use projectB; set odps.namespace.schema=false; -- Create a new table with the same schema as the source table without copying data. create table [if not exists] <table_name> like projectA.<table_name> [lifecycle <days>]; -- Write data from the source table to the new table in the destination project. insert {into|overwrite} table <table_name> [partition (<pt_spec>)] [(<col_name> [,<col_name> ...)]] select * from projectA.<table_name> [zorder by <zcol_name> [, <zcol_name> ...]];Para obter mais informações, consulte Table operations.
-
Se você usar um usuário RAM ou uma função RAM, verifique se o projeto de origem está no estado Normal. Você deve ter a permissão
SELECTna tabela de origem, além das permissõesCreateInstanceeCreateTableno projeto de destino . Há duas maneiras de obter a permissãoSELECTna tabela de origem:Método 1: Adicione a conta RAM ao projeto A de origem de dados (para obter instruções, consulte User planning and management) e conceda a ela permissões sobre os recursos necessários (para obter mais informações, consulte Gerencie user permissions by using commands). Dessa forma, a conta RAM poderá acessar as tabelas da origem de dados.
Método 2: Use a autorização baseada em pacotes para acesso entre projetos. O proprietário da conta Alibaba Cloud empacota os recursos do projeto de origem (projectA) e autoriza o projeto de destino (projectB) a instalar o pacote. Após a instalação do pacote pelo projectB, conceda a permissão de leitura do pacote ao usuário no projectB. Para obter etapas detalhadas, consulte Cross-project resource access based on packages.
Migração para projetos em contas diferentes
Etapa 1: Conceder permissão de leitura nos dados de origem
Acesse projetos em contas Alibaba Cloud distintas de uma das seguintes formas:
-
Método 1: Adicione o proprietário do projeto de destino (projectB), que corresponde à conta Alibaba Cloud B (ALIYUN$projectB_owner@aliyunid.com), como usuário no projeto de origem (projectA). Em seguida, conceda as permissões de recurso necessárias a esse usuário. Para obter mais informações, consulte User planning and management e Gerencie user permissions by using commands.
--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; Método 2: Use a autorização baseada em pacotes. O proprietário do projeto de origem (Conta A) cria um pacote com os recursos do projectA. A Conta A autoriza o projeto de destino, projectB (de propriedade da Conta B), a instalar o pacote. Depois que o projectB instala o pacote, a Conta B pode acessar os recursos contidos nele. Para obter etapas detalhadas, consulte Cross-project resource access based on packages.
Etapa 2: Migrar os dados
Como proprietário da conta Alibaba Cloud, crie a tabela de destino diretamente no projeto de destino:
Criar uma tabela e copiar dados
-- Switch to the destination project, projectB.
use projectB;
set odps.namespace.schema=false;
-- Create a new table based on the source table in projectA and copy the data.
create table [if not exists] <table_name> [lifecycle <days>] as select * from projectA.<table_name>;
Criar uma tabela primeiro e depois copiar os dados
-- Switch to the destination project, projectB.
use projectB;
set odps.namespace.schema=false;
-- Create a new table with the same schema as the source table without copying data.
create table [if not exists] <table_name> like projectA.<table_name> [lifecycle <days>];
-- Write data from the source table to the new table in the destination project.
insert {into|overwrite} table <table_name> [partition (<pt_spec>)] [(<col_name> [,<col_name> ...)]]
select * from projectA.<table_name> [zorder by <zcol_name> [, <zcol_name> ...]];
Para obter mais informações, consulte Table operations.
Para garantir a segurança dos dados, remova a conta Alibaba Cloud do proprietário do projeto de destino do projeto de origem após concluir a migração. Para obter mais informações, consulte Remove an Alibaba Cloud account user (project-level).