Tous les produits
Search
Centre de documentation

AnalyticDB:CREATE EXTERNAL TABLE

Dernière mise à jour :Sep 22, 2026

AnalyticDB for MySQL prend en charge la création de divers types de tables externes, telles que les tables externes OSS, RDS MySQL, MongoDB, Tablestore et MaxCompute.

Prérequis

Notes d'utilisation

La création inter-comptes n'est prise en charge que pour les tables externes OSS.

Tables externes OSS

Important
  • Le bucket OSS doit se trouver dans la même région que le cluster AnalyticDB for MySQL.

  • Lorsque vous créez des tables externes Hudi, Iceberg ou Paimon, la version du noyau du cluster doit répondre aux exigences suivantes :

    • Tables externes Hudi : la version du noyau du cluster doit être 3.1.9.2 ou ultérieure.

    • Tables externes Iceberg : la version du noyau du cluster doit être 3.2.3.0 ou ultérieure.

    • Tables externes Paimon : la version du noyau du cluster doit être 3.2.4.0 ou ultérieure.

    Pour afficher et mettre à jour la version mineure, accédez à la section Configuration Information de la page Cluster Information dans la console AnalyticDB for MySQL.

  • Après avoir créé une table externe OSS partitionnée, vous devez exécuter l'instruction MSCK REPAIR TABLE pour synchroniser les partitions de la table externe. Sinon, vous ne pourrez pas interroger les données de la table externe.

  • Pour créer une table externe OSS entre différents comptes Alibaba Cloud, vous devez ajouter les paramètres requis lors de la création de la base de données externe. Pour plus d'informations, consultez la rubrique CREATE EXTERNAL DATABASE.

Syntaxe

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')]

Paramètres

Paramètre

Obligatoire

Description

table_name (column_name column_type[, …])

Oui

Le nom et le schéma de la table.

Pour plus d'informations sur les conventions de nommage des tables et des colonnes, consultez la section Conventions de nommage.

Important

Lorsque vous créez une table externe Paimon, le nom de la table, les noms des colonnes et les types de données des colonnes doivent être identiques à ceux du fichier Paimon. Le nom de la table et les noms des colonnes doivent être en minuscules.

PARTITIONED BY (column_name column_type[, …])

Non

Lorsque vous créez une table externe partitionnée, vous devez configurer ce paramètre pour spécifier les colonnes de clé de partition. Si vous spécifiez plusieurs colonnes de clé de partition, une table partitionnée à plusieurs niveaux est créée.

ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

Oui

Le délimiteur de colonne. Vous pouvez spécifier n'importe quel symbole, mais il doit correspondre au séparateur utilisé dans le fichier. Cette rubrique utilise la virgule (,) comme exemple.

Important

Ce paramètre n'est pris en charge que lorsque STORED AS TEXTFILE ou STORED AS JSON est spécifié.

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

Oui

Le format de fichier.

Si le fichier est au format .txt ou .csv, définissez ce paramètre sur STORED AS TEXTFILE.

Les fichiers au format PARQUET prennent en charge le type de données STRUCT et les structures STRUCT imbriquées.

Important

Seuls les clusters dont la version du noyau est 3.1.8.0 ou ultérieure prennent en charge les fichiers PARQUET contenant le type de données STRUCT.

LOCATION

Oui

Le chemin d'accès au fichier ou au dossier OSS.

Lorsque vous spécifiez le chemin d'un dossier OSS, respectez les règles suivantes. Sinon, les requêtes peuvent échouer ou renvoyer des résultats anormaux.

  • Le chemin du dossier doit se terminer par une barre oblique (/).

  • Tous les fichiers du dossier doivent être dans le même format.

  • Tous les fichiers du dossier doivent avoir le même nombre de champs, le même ordre des champs et les mêmes types de données de champ.

Lorsque vous créez une table externe partitionnée, définissez LOCATION sur le répertoire parent de la partition. Par exemple, si le chemin d'un fichier OSS est oss://testBucketname/testfolder/p1=2023-06-13/data.csv, vous devez définir LOCATION 'oss://testBucketname/testfolder/' pour créer une table externe partitionnée utilisant p1 comme colonne de clé de partition.

Important
  • Lorsque vous créez une table externe Hudi, assurez-vous qu'un fichier de métadonnées Hudi, c'est-à-dire le fichier .hoodies, existe dans le chemin spécifié.

  • Si vous définissez auto.create.location=true, un dossier OSS est automatiquement créé si le chemin spécifié par LOCATION n'existe pas lors de la création d'une table externe partitionnée.

type

Non

Le type de la table externe Hudi. Valeurs possibles :

  • COW (par défaut) : cette valeur convient aux scénarios nécessitant une efficacité de lecture élevée.

  • MOR : cette valeur convient aux scénarios nécessitant une efficacité d'écriture élevée.

Important

Ce paramètre est requis uniquement lorsque STORED AS HUDI est spécifié.

auto.create.location

Non

Indique s'il faut créer automatiquement le chemin d'accès au fichier ou au dossier OSS. Valeurs possibles :

  • true : Oui.

  • false (par défaut) : Non.

Important

Ce paramètre prend effet uniquement lors de la création d'une table externe partitionnée.

metadata_location

Non

Le chemin d'accès au fichier de métadonnées de la table externe Iceberg.

Important
  • Ce paramètre est requis uniquement lorsque STORED AS ICEBERG est spécifié.

  • Utilisez le dernier fichier de métadonnées pour garantir que vous pouvez interroger les dernières données.

Exemples

Exemple 1 : Créer une table externe non partitionnée

  • Définissez le format de stockage des fichiers sur 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';
  • Définissez le format de stockage des fichiers sur 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');
  • Définissez le format de stockage des fichiers sur 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';
  • Définissez le format de stockage des fichiers sur 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');
  • Définissez le format de stockage des fichiers sur 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/';

Exemple 2 : Créer une table externe partitionnée

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/';

Exemple 3 : Créer une table externe à partitions multiples

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/';

Tables externes RDS MySQL

Important
  • Pour créer des tables externes ApsaraDB RDS for MySQL, vous devez d'abord activer l'interface réseau élastique (ENI) sur la page Cluster Information de la console AnalyticDB for MySQL. L'activation ou la désactivation de l'ENI peut interrompre les connexions à la base de données pendant environ 2 minutes. Durant cette période, les opérations de lecture et d'écriture sont impossibles. Procédez avec prudence lors de l'activation ou de la désactivation de l'ENI.

  • L'instance RDS MySQL doit se trouver dans le même VPC que le cluster AnalyticDB for MySQL.

Syntaxe

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}"]
  }';

Paramètres

Paramètre

Obligatoire

Description

table_name (column_name column_type[, …])

Oui

Nom et schéma de la table.

Pour plus d'informations sur les conventions de nommage des tables et des colonnes, consultez les Conventions de nommage.

ENGINE='MYSQL'

Oui

Moteur de stockage de la table externe. Pour lire et écrire des données dans RDS MySQL, définissez la valeur sur MYSQL.

TABLE_PROPERTIES

Oui

Propriétés de la table externe.

url

Oui

Point de terminaison interne, numéro de port et nom de la base de données de l'instance RDS MySQL. Pour savoir comment obtenir le point de terminaison interne d'une instance RDS, consultez la rubrique Afficher ou modifier les points de terminaison et les ports internes et publics.

tablename

Oui

Nom de la table dans RDS MySQL.

username

Oui

Compte de base de données RDS MySQL.

password

Oui

Mot de passe du compte de base de données RDS MySQL.

charset

Non

Jeu de caractères de la table externe MySQL. Valeurs possibles :

  • gbk

  • utf8 (par défaut)

  • utf8mb4

Exemple

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"
}';

Tables externes MongoDB

Important
  • Avant de créer une table externe MongoDB, vous devez activer l'interface réseau élastique (ENI) sur la page Cluster Information de la console AnalyticDB for MySQL. L'activation ou la désactivation de l'ENI peut interrompre les connexions à la base de données pendant environ 2 minutes. Durant cette période, les opérations de lecture et d'écriture sont impossibles. Procédez avec prudence lors de l'activation ou de la désactivation de l'ENI.

  • L'instance MongoDB doit se trouver dans le même VPC que le cluster AnalyticDB for MySQL.

Syntaxe

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",
}';

Paramètres

Paramètre

Obligatoire

Description

table_name (column_name column_type[, …])

Oui

Nom et schéma de la table.

Pour plus d'informations sur les conventions de nommage des tables et des colonnes, consultez les Conventions de nommage.

ENGINE='MYSQL'

Oui

Moteur de stockage de la table externe. Pour lire et écrire des données dans MongoDB, définissez la valeur sur MONGODB.

TABLE_PROPERTIES

Oui

Propriétés de la table externe.

mapped_name

Oui

Nom de la collection MongoDB.

location

Oui

Point de terminaison VPC de l'instance ApsaraDB for MongoDB.

username

Oui

Compte de base de données de l'instance MongoDB.

Remarque

MongoDB vérifie le compte et le mot de passe de la base de données cible. Utilisez le compte de la base de données spécifiée dans le point de terminaison VPC de l'instance MongoDB. En cas de doute, contactez le support technique.

password

Oui

Mot de passe du compte de base de données MongoDB.

Exemple

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",
}';

Tables externes Tablestore

Important

Si une instance Tablestore est associée à un VPC, elle doit se trouver dans le même VPC que le cluster AnalyticDB for MySQL.

Syntaxe

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

Paramètres

Paramètre

Obligatoire

Description

table_name (column_name column_type[, …])

Oui

Le nom et le schéma de la table. Pour plus d’informations sur les conventions de nommage des tables et des colonnes, consultez la section Conventions de nommage.

ENGINE='OTS’

Oui

Le moteur de stockage de la table externe. Pour lire et écrire des données dans Tablestore, définissez la valeur sur OTS.

mapped_name

Oui

Le nom de la table dans l’instance Tablestore. Connectez-vous à la console Tablestore et consultez le nom de la table sur la page Instance Management.

location

Oui

Le point de terminaison VPC de l’instance Tablestore. Connectez-vous à la console Tablestore et consultez le point de terminaison VPC de l’instance sur la page Instance Management.

Exemple

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"
}';

Tables externes MaxCompute

Important
  • Le projet MaxCompute doit se trouver dans la même région que le cluster AnalyticDB for MySQL.

  • Pour créer des tables externes MaxCompute par lots, consultez la rubrique IMPORT FOREIGN SCHEMA.

Syntaxe

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"
}'; 

Paramètres

Paramètre

Obligatoire

Description

table_name (column_name column_type[, …])

Oui

Le nom et le schéma de la table. Le schéma de la table doit inclure les colonnes de clé de partition.

table_name et column_name : le nom de la table et le nom d’une colonne. Pour plus d’informations sur les conventions de nommage des tables et des colonnes, consultez la section Conventions de nommage.

column_type : les types de données de base MaxCompute et les types de données complexes (ARRAY, MAP et STRUCT) sont pris en charge.

Remarque

Les types de données complexes MaxCompute sont pris en charge à partir de la version 3.2.1.0. Pour plus d’informations sur les types de données complexes, consultez la section Types de données complexes.

Pour afficher et mettre à jour la version mineure d’un cluster AnalyticDB for MySQL, connectez-vous à la console AnalyticDB for MySQL et accédez à la section Configuration Information de la page Cluster Information.

ENGINE='ODPS'

Oui

Le moteur de stockage de la table externe. Pour lire et écrire des données dans MaxCompute, définissez la valeur sur ODPS.

endpoint

Oui

Le point de terminaison de MaxCompute.

Remarque

Vous pouvez accéder à MaxCompute uniquement via un point de terminaison VPC. Pour savoir comment consulter les points de terminaison MaxCompute, consultez la section Points de terminaison.

accessid

Oui

L’ID AccessKey d’un compte Alibaba Cloud ou d’un utilisateur Resource Access Management (RAM) disposant des autorisations nécessaires pour accéder à MaxCompute.

Pour savoir comment obtenir un ID AccessKey et un secret AccessKey, consultez la section Comptes et autorisations.

accesskey

Oui

Le secret AccessKey d’un compte Alibaba Cloud ou d’un utilisateur RAM disposant des autorisations nécessaires pour accéder à MaxCompute.

Pour savoir comment obtenir un ID AccessKey et un secret AccessKey, consultez la section Comptes et autorisations.

partition_column

Non

La colonne de clé de partition. Ce paramètre est obligatoire si la table MaxCompute est une table partitionnée.

Important

Lors de la création d’une table externe partitionnée MaxCompute, si une colonne de partition n’est pas la dernière colonne de la liste column, le système déplace automatiquement la colonne de partition à la fin de la liste des colonnes.

project_name

Oui

Le nom du projet MaxCompute.

table_name

Oui

Le nom de la table MaxCompute.

Exemple

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"
}';

Références