Todos os produtos
Search
Central de documentação

AnalyticDB:CREATE EXTERNAL TABLE

Última atualização: Jul 31, 2026

AnalyticDB for MySQL permite a criação de diversos tipos de tabelas externas, incluindo tabelas externas do OSS, RDS MySQL, MongoDB, Tablestore e MaxCompute.

Pré-requisitos

Observações de uso

A criação entre contas é suportada apenas para tabelas externas do OSS.

Tabelas externas do OSS

Importante
  • O bucket do OSS deve estar na mesma região do cluster AnalyticDB for MySQL.

  • Ao criar tabelas externas Hudi, Iceberg ou Paimon, a versão do kernel do cluster deve atender aos seguintes requisitos:

    • Tabelas externas Hudi: a versão do kernel do cluster deve ser 3.1.9.2 ou posterior.

    • Tabelas externas Iceberg: a versão do kernel do cluster deve ser 3.2.3.0 ou posterior.

    • Tabelas externas Paimon: a versão do kernel do cluster deve ser 3.2.4.0 ou posterior.

    Para visualize e atualize a versão secundária, acesse a seção Configuration Information na página Cluster Information no console do AnalyticDB for MySQL.

  • Após criar uma tabela externa particionada do OSS, execute a instrução MSCK REPAIR TABLE para sincronizar as partições da tabela externa. Caso contrário, não será possível consultar dados na tabela.

  • Para criar uma tabela externa do OSS entre contas da Alibaba Cloud, adicione os parâmetros necessários durante a criação do banco de dados externo. Para mais informações, consulte CREATE EXTERNAL DATABASE.

Sintaxe

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
[PARTITIONED BY (column_name column_type[, …])]
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS {TEXTFILE|ORC|PARQUET|JSON|RCFIL|HUDI|ICEBERG|PAIMON}
LOCATION 'OSS_LOCATION';
[TBLPROPERTIES (
 'type' = 'cow|mor'
 'auto.create.location' = 'true|false')
 'metadata_location' = 'METADATA_LOCATION')]

Parâmetros

Parâmetro

Obrigatório

Descrição

table_name (column_name column_type[, …])

Sim

Nome e esquema da tabela.

Para informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions.

Importante

Ao criar uma tabela externa Paimon, o nome da tabela, os nomes das colunas e os tipos de dados das colunas devem ser idênticos aos do arquivo Paimon. O nome da tabela e os nomes das colunas devem estar em letras minúsculas.

PARTITIONED BY (column_name column_type[, …])

Não

Configure este parâmetro para especificar as colunas de chave de partição ao criar uma tabela externa particionada. Se você especificar várias colunas de chave de partição, uma tabela com múltiplos níveis de partição será criada.

ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

Sim

Delimitador de coluna. É possível especificar qualquer símbolo, desde que corresponda ao separador utilizado no arquivo. Este tópico utiliza a vírgula (,) como exemplo.

Importante

Este parâmetro é suportado apenas quando STORED AS TEXTFILE ou STORED AS JSON for especificado.

STORED AS {TEXTFILE|ORC|PARQUET|JSON|RCFILE|HUDI|ICEBERG}

Sim

Formato do arquivo.

Se o arquivo estiver no formato .txt ou .csv, defina este parâmetro como STORED AS TEXTFILE.

Arquivos no formato PARQUET suportam o tipo de dados STRUCT e STRUCTs aninhados.

Importante

Apenas clusters com versão de kernel 3.1.8.0 ou posterior suportam arquivos PARQUET contendo o tipo de dados STRUCT.

LOCATION

Sim

Caminho do arquivo ou pasta no OSS.

Ao especificar o caminho de uma pasta do OSS, siga estas regras. Caso contrário, as consultas podem falhar ou retornar resultados anormais.

  • O caminho da pasta deve terminar com uma barra (/).

  • Todos os arquivos na pasta devem estar no mesmo formato.

  • Todos os arquivos na pasta devem ter o mesmo número de campos, ordem de campos e tipos de dados dos campos.

Ao criar uma tabela externa particionada, defina LOCATION como o diretório pai da partição. Por exemplo, se o caminho de um arquivo no OSS for oss://testBucketname/testfolder/p1=2023-06-13/data.csv, defina LOCATION 'oss://testBucketname/testfolder/' para criar uma tabela externa particionada que utilize p1 como coluna de chave de partição.

Importante
  • Ao criar uma tabela externa Hudi, certifique-se de que exista um arquivo de metadados Hudi (arquivo .hoodies) no caminho especificado.

  • Se você definir auto.create.location=true, uma pasta no OSS será criada automaticamente caso o caminho especificado por LOCATION não exista durante a criação de uma tabela externa particionada.

type

Não

Tipo da tabela externa Hudi. Valores válidos:

  • COW (padrão): adequado para cenários que exigem alta eficiência de leitura.

  • MOR: recomendado para cenários que exigem alta eficiência de gravação.

Importante

Este parâmetro é obrigatório apenas quando STORED AS HUDI for especificado.

auto.create.location

Não

Define se o caminho do arquivo ou pasta no OSS deve ser criado automaticamente. Valores válidos:

  • true: Sim.

  • false (padrão): Não.

Importante

Este parâmetro tem efeito apenas durante a criação de uma tabela externa particionada.

metadata_location

Não

Caminho do arquivo de metadados da tabela externa Iceberg.

Importante
  • Este parâmetro é obrigatório apenas quando STORED AS ICEBERG for especificado.

  • Utilize o arquivo de metadados mais recente para garantir a consulta dos dados atualizados.

Exemplos

Exemplo 1: Criar uma tabela externa não particionada

  • Defina o formato de armazenamento de arquivo como TEXTFILE.

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest1
    (id INT,
    name STRING,
    age INT,
    city STRING)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
    STORED AS TEXTFILE
    LOCATION  'oss://testBucketName/osstest/p1=hangzhou/p2=2023-06-13/data.csv';
  • Defina o formato de armazenamento de arquivo como HUDI.

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest2
    (id INT,
    name STRING,
    age INT,
    city STRING)
    STORED AS HUDI
    LOCATION  'oss://testBucketName/osstest/test'
    TBLPROPERTIES ('type' = 'cow');
  • Defina o formato de armazenamento de arquivo como PARQUET.

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest3
    (
    A STRUCT < var1:STRING, var2:INT >) 
    STORED AS PARQUET 
    LOCATION 'oss://testBucketName/osstest/Parquet';
  • Defina o formato de armazenamento de arquivo como ICEBERG.

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest4
    (
    user_id BIGINT)  
    STORED AS ICEBERG  
    LOCATION 'oss://testBucketName/osstest/no_partition_table/' 
    TBLPROPERTIES (metadata_location='oss://testBucketName/osstest/no_partition_table/metadata/00000-a32d6136-8490-4ad2-ada3-fe2f7204199f.metadata.json');
  • Defina o formato de armazenamento de arquivo como PAIMON.

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest5
    (
    a INT,
    b BIGINT,
    aCa STRING, 
    d VARCHAR(1))
    STORED AS PAIMON 
    LOCATION 'oss://testBucketName/osstest/default.db/t1/';

Exemplo 2: Criar uma tabela externa particionada

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest6
(id int,
name string,
age int,
city string)
PARTITIONED BY (p2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
STORED AS TEXTFILE
LOCATION  'oss://testBucketName/osstest/p1=hangzhou/';

Exemplo 3: Criar uma tabela externa com múltiplos níveis de partição

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest7
(id int,
name string,
age int,
city string)
PARTITIONED BY (p1 string,p2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
STORED AS TEXTFILE
LOCATION  'oss://testBucketName/osstest/';

Tabelas externas do RDS MySQL

Importante
  • Para criar tabelas externas do ApsaraDB RDS for MySQL, ative primeiro a interface de rede elástica (ENI) na página Cluster Information do console do AnalyticDB for MySQL. Ao ativar ou desativar a ENI, as conexões com o banco de dados podem ser interrompidas por aproximadamente 2 minutos. Durante esse período, operações de leitura e escrita ficam indisponíveis. Ative ou desative a ENI com cautela.

  • A instância do RDS MySQL deve estar na mesma Virtual Private Cloud (VPC) do cluster AnalyticDB for MySQL.

Sintaxe

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='MYSQL'
TABLE_PROPERTIES='{  
	"url":"mysql_vpc_address",  
	"tablename":"mysql_table_name",  
	"username":"mysql_user_name",  
	"password":"mysql_user_password"
	[,"charset":"{gbk|utf8|utf8mb4}"]
  }';

Parâmetros

Parâmetro

Obrigatório

Descrição

table_name (column_name column_type[, …])

Sim

Nome e esquema da tabela.

Para informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions.

ENGINE='MYSQL'

Sim

Engine de armazenamento da tabela externa. Para ler e gravar dados no RDS MySQL, defina o valor como MYSQL.

TABLE_PROPERTIES

Sim

Propriedades da tabela externa.

url

Sim

Endpoint interno, número da porta e nome do banco de dados da instância RDS MySQL. Para obter informações sobre como adquirir o endpoint interno de uma instância RDS, consulte View or change the internal and public endpoints and ports.

tablename

Sim

Nome da tabela no RDS MySQL.

username

Sim

Conta do banco de dados RDS MySQL.

password

Sim

Senha da conta do banco de dados RDS MySQL.

charset

Não

Conjunto de caracteres da tabela externa MySQL. Valores válidos:

  • gbk

  • utf8 (padrão)

  • utf8mb4

Exemplo

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.mysqltest (
	id int,
	name varchar(1023),
	age int
 ) ENGINE = 'MYSQL'
 TABLE_PROPERTIES = '{
   "url":"jdbc:mysql://rm-bp1gx6********.mysql.rds.aliyuncs.com:3306/test_adb",
   "tablename":"person",
   "username":"testUserName",
   "password":"testUserPassword",
   "charset":"utf8"
}';

Tabelas externas do MongoDB

Importante
  • Antes de criar uma tabela externa do MongoDB, ative a interface de rede elástica (ENI) na página Cluster Information do console do AnalyticDB for MySQL. Ao ativar ou desativar a ENI, as conexões com o banco de dados podem ser interrompidas por aproximadamente 2 minutos. Durante esse período, operações de leitura e escrita ficam indisponíveis. Ative ou desative a ENI com cautela.

  • A instância do MongoDB deve estar na mesma VPC do cluster AnalyticDB for MySQL.

Sintaxe

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='MONGODB'
TABLE_PROPERTIES = '{
	"mapped_name":"table",
  "location":"location",
  "username":"user",
  "password":"password",
}';

Parâmetros

Parâmetro

Obrigatório

Descrição

table_name (column_name column_type[, …])

Sim

Nome e esquema da tabela.

Para informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions.

ENGINE='MYSQL'

Sim

Engine de armazenamento da tabela externa. Para ler e gravar dados no MongoDB, defina o valor como MONGODB.

TABLE_PROPERTIES

Sim

Propriedades da tabela externa.

mapped_name

Sim

Nome da coleção do MongoDB.

location

Sim

vpc endpoint da instância do ApsaraDB for MongoDB.

username

Sim

database account do ApsaraDB for MongoDB.

Nota

O ApsaraDB for MongoDB valida a conta e a senha no banco de dados de destino. Utilize a conta do banco de dados especificado no endpoint VPC. Em caso de problemas, entre em contato com o suporte técnico.

password

Sim

Senha da conta do banco de dados ApsaraDB for MongoDB.

Exemplo

CREATE EXTERNAL TABLE adb_external_demo.mongodbtest (
  id int,
  name string,
  age int
) ENGINE = 'MONGODB' TABLE_PROPERTIES ='{
"mapped_name":"person",
"location":"mongodb://testuser:****@dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717/test_mongodb",
"username":"testuser",
"password":"password",
}';

Tabelas externas do Tablestore

Importante

Se uma instância do Tablestore estiver anexada a uma VPC, ela deverá estar na mesma VPC do cluster AnalyticDB for MySQL.

Sintaxe

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='OTS'
TABLE_PROPERTIES = '{
	"mapped_name":"table_name",
	"location":"tablestore_vpc_address"
}';

Parâmetros

Parâmetro

Obrigatório

Descrição

table_name (column_name column_type[, …])

Sim

Nome e esquema da tabela. Para informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions.

ENGINE='OTS’

Sim

Engine de armazenamento da tabela externa. Para ler e gravar dados no Tablestore, defina o valor como OTS.

mapped_name

Sim

Nome da tabela na instância do Tablestore. Faça login no console do Tablestore e visualize o nome da tabela na página Instance Management.

location

Sim

Endpoint VPC da instância do Tablestore. Faça login no console do Tablestore e visualize o endpoint VPC da instância na página Instance Management.

Exemplo

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.otstest (
	id int,
	name string,
	age int
) ENGINE = 'OTS' 
TABLE_PROPERTIES = '{
	"mapped_name":"person",
	"location":"https://w0****la.cn-hangzhou.vpc.tablestore.aliyuncs.com"
}';

Tabelas externas do MaxCompute

Importante
  • O projeto do MaxCompute deve estar na mesma região do cluster AnalyticDB for MySQL.

  • Para criar tabelas externas do MaxCompute em lote, consulte IMPORT FOREIGN SCHEMA.

Sintaxe

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='ODPS'
TABLE_PROPERTIES='{
	"endpoint":"endpoint",
	"accessid":"accesskey_id",
	"accesskey":"accesskey_secret",
	["partition_column":"partition_column"],
	"project_name":"project_name",
	"table_name":"table_name"
}'; 

Parâmetros

Parâmetro

Obrigatório

Descrição

table_name (column_name column_type[, …])

Sim

Nome e esquema da tabela. O esquema da tabela deve incluir as colunas de chave de partição.

table_name e column_name: nome da tabela e nome da coluna. Para informações sobre as convenções de nomenclatura de tabelas e colunas, consulte Naming conventions.

column_type: tipos de dados básicos e complexos do MaxCompute (ARRAY, MAP e STRUCT) são suportados.

Nota

Os tipos de dados complexos do MaxCompute são suportados nas versões 3.2.1.0 e posteriores. Para mais informações sobre tipos de dados complexos, consulte Complex data types.

Para visualize e atualize a versão secundária de um cluster AnalyticDB for MySQL, faça login no console do AnalyticDB for MySQL e acesse a seção Configuration Information da página Cluster Information.

ENGINE='ODPS'

Sim

Engine de armazenamento da tabela externa. Para ler e gravar dados no MaxCompute, defina o valor como ODPS.

endpoint

Sim

Endpoint do MaxCompute.

Nota

O acesso ao MaxCompute é permitido apenas via Endpoint VPC. Para informações sobre como visualizar os Endpoints do MaxCompute, consulte Endpoints.

accessid

Sim

AccessKey ID de uma conta Alibaba Cloud ou de um usuário do Resource Access Management (RAM) com permissões para acessar o MaxCompute.

Para informações sobre como obter um AccessKey ID e um AccessKey secret, consulte Accounts and permissions.

accesskey

Sim

AccessKey secret de uma conta Alibaba Cloud ou de um usuário RAM com permissões para acessar o MaxCompute.

Para informações sobre como obter um AccessKey ID e um AccessKey secret, consulte Accounts and permissions.

partition_column

Não

Coluna de chave de partição. Este parâmetro é obrigatório se a tabela do MaxCompute for particionada.

Importante

Ao criar uma tabela externa particionada do MaxCompute, se uma coluna de partição não for a última na lista de column, o sistema moverá automaticamente essa coluna para o final da lista.

project_name

Sim

Nome do projeto do MaxCompute.

table_name

Sim

Nome da tabela do MaxCompute.

Exemplo

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.mctest (
	id int,
	name varchar(1023),
	age int,
	dt string
) ENGINE='ODPS'
TABLE_PROPERTIES='{
	"accessid":"LTAI****************",
	"endpoint":"http://service.cn-hangzhou.maxcompute.aliyun.com/api",
	"accesskey":"yourAccessKeySecret",
	"partition_column":"dt",
	"project_name":"test_adb",
	"table_name":"person"
}';

Referências