Utilize IMPORT FOREIGN SCHEMA para criar tabelas externas do MaxCompute em lote no cluster AnalyticDB for MySQL.
Pré-requisitos
Antes de começar, verifique se você possui:
-
Um cluster AnalyticDB for MySQL executando a versão V3.2.2.0 ou posterior
Para visualizar e atualizar a versão secundária, faça login no console do AnalyticDB for MySQL e acesse a seção Configuration Information na página Cluster Information.
-
Elastic Network Interface (ENI) ativada no cluster
ImportantePara ativar a ENI, faça login no console do AnalyticDB for MySQL, acesse a página de detalhes do cluster e escolha Cluster Management > Cluster Information no painel de navegação à esquerda. Na seção Network Information, ative a ENI. A ativação ou desativação da ENI interrompe as conexões com o banco de dados por aproximadamente 2 minutos. Nenhuma operação de leitura ou gravação pode ser realizada durante esse período.
Um projeto MaxCompute na mesma região do seu cluster AnalyticDB for MySQL
-
Os blocos CIDR da virtual private cloud (VPC) onde seu cluster está localizado adicionados à lista de permissões de endereços IP do projeto MaxCompute
Para encontrar os blocos CIDR, visualize o ID da VPC na página Cluster Information do console do AnalyticDB for MySQL e, em seguida, localize a VPC no console da VPC . Para saber como configurar a lista de permissões no MaxCompute, consulte Gerenciar listas de permissões de endereços IP .
Um servidor externo criado para o cluster — consulte Criar um servidor externo neste tópico
Início rápido
O exemplo completo a seguir demonstra todo o fluxo de trabalho: crie um servidor externo e, em seguida, importe as tabelas externas.
Etapa 1: Criar um servidor externo.
CREATE SERVER maxcompute_server
TYPE = 'ODPS'
SERVER_PROPERTIES = '{
"endpoint":"http://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api",
"accessid":"STS.****************",
"accesskey":"yourAccessKeySecret"
}';
Etapa 2: Importar todas as tabelas de um projeto MaxCompute.
IMPORT FOREIGN SCHEMA my_project
FROM maxcompute_server
INTO my_adb_schema;
Esse comando cria uma tabela externa no AnalyticDB for MySQL para cada tabela existente em my_project.
Sintaxe
IMPORT FOREIGN SCHEMA odps_project
[LIMIT TO (table_name[, ...])]
FROM server_name
INTO adb_schema
[OPTIONS (
if_table_exist 'error|ignore|update',
if_type_unsupport 'error|ignore',
table_prefix 'table_prefix',
table_suffix 'table_suffix')]
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
Nome do projeto MaxCompute. |
|
|
Não |
Tabelas do MaxCompute a serem importadas. Se omitido, todas as tabelas do projeto serão importadas. |
|
|
Sim |
Nome do servidor externo. |
|
|
Sim |
Nome do banco de dados no cluster AnalyticDB for MySQL. |
|
|
Não |
Define como tratar conflitos de nomes com tabelas existentes. Padrão: |
|
|
Não |
Define como tratar tipos de dados não suportados. Padrão: |
|
|
Não |
Prefixo a ser adicionado ao nome de cada tabela externa. Por padrão, as tabelas externas usam o mesmo nome da tabela correspondente no MaxCompute. |
|
|
Não |
Sufixo a ser adicionado ao nome de cada tabela externa. Por padrão, as tabelas externas usam o mesmo nome da tabela correspondente no MaxCompute. |
Opções de if_table_exist
|
Valor |
Comportamento |
Quando usar |
|
|
Relata um erro e lista as tabelas conflitantes. Nenhuma tabela é criada. |
Quando você precisa de controle rigoroso e deve revisar os conflitos antes de prosseguir. |
|
|
Ignora tabelas com nomes conflitantes; cria todas as outras tabelas. |
Ao executar scripts idempotentes — a importação pode ser reexecutada com segurança sem sobrescrever tabelas existentes. |
|
|
Sobrescreve tabelas com nomes conflitantes; cria todas as outras tabelas. |
Para sincronizar alterações de esquema do MaxCompute — as tabelas externas existentes são atualizadas para corresponder ao esquema mais recente do MaxCompute. |
Opções de if_type_unsupport
|
Valor |
Comportamento |
|
|
Relata um erro e lista os tipos de dados não suportados, bem como as tabelas que os contêm. |
|
|
Ignora tabelas que contêm tipos de dados não suportados; cria todas as outras tabelas. |
Exemplos
Importar todas as tabelas de um projeto
Importe todas as tabelas de my_project para o banco de dados my_adb_schema:
IMPORT FOREIGN SCHEMA my_project
FROM maxcompute_server
INTO my_adb_schema;
Importar tabelas selecionadas com opções de nomenclatura
Importe apenas as tabelas customer e order, adicionando o prefixo pre_ e o sufixo _suf aos nomes das tabelas externas. Sobrescreva quaisquer tabelas existentes com o mesmo nome e ignore tabelas com tipos de dados não suportados:
IMPORT FOREIGN SCHEMA my_project
LIMIT TO (customer, order)
FROM maxcompute_server
INTO my_adb_schema
OPTIONS (
if_table_exist 'update',
if_type_unsupport 'ignore',
table_prefix 'pre_',
table_suffix '_suf'
);
Isso cria tabelas externas chamadas pre_customer_suf e pre_order_suf no AnalyticDB for MySQL.
Gerenciar servidores externos
Um servidor externo armazena a configuração de conexão para um projeto MaxCompute. Crie um antes de executar IMPORT FOREIGN SCHEMA.
Criar um servidor externo
Sintaxe
CREATE SERVER <server_name>
TYPE = 'ODPS'
SERVER_PROPERTIES = '{
"endpoint":"<endpoint>",
"accessid":"<accesskey_id>",
"accesskey":"<accesskey_secret>"
}'
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
Nome do servidor externo. Até 64 caracteres; pode conter letras, dígitos e sublinhados ( |
|
|
Sim |
Tipo do servidor externo. Defina como |
|
|
Sim |
Endpoint da VPC do MaxCompute. Apenas endpoints de VPC são suportados. Para valores de endpoint, consulte Endpoints. |
|
|
Sim |
AccessKey ID de uma conta Alibaba Cloud ou de um usuário do Resource Access Management (RAM) com acesso ao MaxCompute. Para obter um AccessKey ID e um AccessKey secret, consulte Contas e permissões. |
|
|
Sim |
AccessKey secret da conta Alibaba Cloud ou do usuário RAM que possui permissões para acessar o MaxCompute. Para obter um AccessKey ID e um AccessKey secret, consulte Contas e permissões. |
Exemplo
CREATE SERVER maxcompute_server
TYPE = 'ODPS'
SERVER_PROPERTIES = '{
"endpoint":"http://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api",
"accessid":"STS.****************",
"accesskey":"yourAccessKeySecret"
}';
Consultar servidores externos
Liste todos os servidores externos:
SHOW SERVER
Consulte um servidor externo específico pelo nome:
SHOW SERVER WHERE SERVER_NAME='<server_name>';
Exemplo:
SHOW SERVER WHERE SERVER_NAME='maxcompute_server';
Consulte servidores externos por tipo:
SHOW SERVER WHERE SERVER_TYPE='<server_type>';
Para servidores MaxCompute, defina server_type como ODPS:
SHOW SERVER WHERE SERVER_TYPE='ODPS';
Renomear um servidor externo
Sintaxe
ALTER SERVER <server_name> RENAME <new_server_name>
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
Nome atual do servidor externo. |
|
|
Sim |
Novo nome do servidor externo. |
Exemplo
ALTER SERVER maxcompute_server RENAME mc_server;
Excluir um servidor externo
A exclusão de um servidor externo desconecta a ligação entre o AnalyticDB for MySQL e o MaxCompute estabelecida por meio desse servidor.
Sintaxe
DROP SERVER <server_name>
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
Nome do servidor externo a ser excluído. |
Exemplo
DROP SERVER maxcompute_server;