Todos os produtos
Search
Central de documentação

AnalyticDB:CRIAR TABELA EXTERNA

Última atualização: Sep 22, 2026

O AnalyticDB for MySQL permite criar vários tipos de tabelas externas, como as do OSS, RDS MySQL, MongoDB, Tablestore e MaxCompute.

Pré-requisitos

Notas de uso

A criação entre contas tem suporte apenas para tabelas externas do OSS.

Tabelas externas do OSS

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

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

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

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

    • Tabelas externas do 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. Caso contrário, não será possível consultar dados.

  • Para criar uma tabela externa do OSS entre contas da Alibaba Cloud, adicione os parâmetros necessários ao criar o banco de dados externo. Para obter 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

O nome e o esquema da tabela.

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

Importante

Ao criar uma tabela externa do 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

Ao criar uma tabela externa particionada, configure este parâmetro para especificar as colunas de chave de partição. Se especificar várias colunas de chave de partição, o sistema criará uma tabela particionada em vários níveis.

ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

Sim

O delimitador de coluna. É possível especificar qualquer símbolo, desde que seja igual ao separador usado no arquivo. Este tópico usa a vírgula (,) como exemplo.

Importante

Este parâmetro tem suporte apenas ao especificar STORED AS TEXTFILE ou STORED AS JSON.

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

Sim

O 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 que contêm o tipo de dados STRUCT.

LOCATION

Sim

O caminho do arquivo ou da pasta do OSS.

Ao especificar o caminho de uma pasta do OSS, siga estas regras para evitar falhas nas consultas ou 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 a mesma quantidade de campos, a mesma ordem de campos e os mesmos tipos de dados de 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 do OSS for oss://testBucketname/testfolder/p1=2023-06-13/data.csv, defina LOCATION 'oss://testBucketname/testfolder/' para criar uma tabela externa particionada que usa p1 como coluna de chave de partição.

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

  • Se definir auto.create.location=true, o sistema criará automaticamente uma pasta do OSS caso o caminho especificado por LOCATION não exista no momento da criação de uma tabela externa particionada.

type

Não

O tipo da tabela externa do Hudi. Valores válidos:

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

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

Importante

Este parâmetro é obrigatório apenas ao especificar STORED AS HUDI.

auto.create.location

Não

Especifica se o caminho do arquivo ou da pasta do OSS é criado automaticamente. Valores válidos:

  • true: Sim.

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

Importante

Este parâmetro só tem efeito ao criar uma tabela externa particionada.

metadata_location

Não

O caminho do arquivo de metadados da tabela externa do Iceberg.

Importante
  • Este parâmetro é obrigatório apenas ao especificar STORED AS ICEBERG.

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

Exemplos

Exemplo 1: Criar uma tabela externa não particionada

  • Defina o formato de armazenamento do 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 do 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 do 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 do 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 do 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 particionada em vários níveis

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, primeiro 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, não é possível executar operações de leitura ou gravação. Ative ou desative a ENI com cuidado.

  • A instância do RDS MySQL deve estar na mesma VPC do cluster do 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

O nome e o esquema da tabela.

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

ENGINE='MYSQL'

Sim

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

TABLE_PROPERTIES

Sim

As propriedades da tabela externa.

url

Sim

O endpoint interno, o número da porta e o nome do banco de dados da instância do RDS MySQL. Para obter informações sobre como obter o endpoint interno de uma instância do RDS, consulte Visualize ou altere os endpoints e portas internos e públicos.

tablename

Sim

O nome da tabela no RDS MySQL.

username

Sim

A conta do banco de dados do RDS MySQL.

password

Sim

A senha da conta do banco de dados do RDS MySQL.

charset

Não

O conjunto de caracteres da tabela externa do 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, não é possível executar operações de leitura ou gravação. Ative ou desative a ENI com cuidado.

  • A instância do MongoDB deve estar na mesma VPC do cluster do 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

O nome e o esquema da tabela.

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

ENGINE='MYSQL'

Sim

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

TABLE_PROPERTIES

Sim

As propriedades da tabela externa.

mapped_name

Sim

O nome da coleção do MongoDB.

location

Sim

The VPC endpoint of the ApsaraDB for MongoDB instance.

username

Sim

The database account of the MongoDB instance.

Nota

O MongoDB verifica a conta e a senha do banco de dados no banco de dados de destino. Use a conta do banco de dados especificada no endpoint de VPC da instância do MongoDB. Em caso de dúvidas, entre em contato com o suporte técnico.

password

Sim

A senha da conta do banco de dados do 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 conectada a uma VPC, a instância deverá estar na mesma VPC do cluster do 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

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

ENGINE='OTS’

Sim

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

mapped_name

Sim

O nome da tabela na instância do Tablestore. Acesse o console do Tablestore e visualize o nome da tabela na página Instance Management.

location

Sim

O endpoint de VPC da instância do Tablestore. Acesse o console do Tablestore e visualize o endpoint de 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 do AnalyticDB for MySQL.

  • Para criar tabelas externas do MaxCompute em lotes, 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

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

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

column_type: há suporte para os tipos de dados básicos e complexos (ARRAY, MAP e STRUCT) do MaxCompute.

Nota

O MaxCompute suporta tipos de dados complexos nas versões 3.2.1.0 e posteriores. Para obter mais informações sobre tipos de dados complexos, consulte Complex data types.

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

ENGINE='ODPS'

Sim

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

endpoint

Sim

O endpoint do MaxCompute.

Nota

Você pode acessar o MaxCompute apenas por um endpoint de VPC. Para obter informações sobre como visualizar os endpoints do MaxCompute, consulte Endpoints.

accessid

Sim

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

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

accesskey

Sim

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

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

partition_column

Não

A 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 coluna na lista de column, o sistema move automaticamente a coluna de partição para o final da lista de colunas.

project_name

Sim

O nome do projeto do MaxCompute.

table_name

Sim

O 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