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
Un cluster Enterprise Edition, Basic Edition ou Data Lakehouse Edition AnalyticDB for MySQL est créé.
-
La version du noyau du cluster doit être 3.1.8.0 ou ultérieure.
RemarquePour afficher et mettre à jour la version mineure, accédez à la section Configuration Information de la page Cluster Information dans la console AnalyticDB for MySQL.
Une base de données externe doit être créée. Pour plus d'informations, consultez la rubrique CREATE EXTERNAL DATABASE.
Notes d'utilisation
La création inter-comptes n'est prise en charge que pour les tables externes OSS.
Tables externes OSS
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 TABLEpour 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 |
| 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. |
| 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. |
| 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 |
| Oui | Le format de fichier. Si le fichier est au format .txt ou .csv, définissez ce paramètre sur Les fichiers au format Important Seuls les clusters dont la version du noyau est 3.1.8.0 ou ultérieure prennent en charge les fichiers |
| 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.
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 Important
|
| Non | Le type de la table externe Hudi. Valeurs possibles :
Important Ce paramètre est requis uniquement lorsque |
| Non | Indique s'il faut créer automatiquement le chemin d'accès au fichier ou au dossier OSS. Valeurs possibles :
Important Ce paramètre prend effet uniquement lors de la création d'une table externe partitionnée. |
| Non | Le chemin d'accès au fichier de métadonnées de la table externe Iceberg. Important
|
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
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 |
| 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. |
| Oui | Moteur de stockage de la table externe. Pour lire et écrire des données dans RDS MySQL, définissez la valeur sur MYSQL. |
| Oui | Propriétés de la table externe. |
| 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. |
| Oui | Nom de la table dans RDS MySQL. |
| Oui | Compte de base de données RDS MySQL. |
| Oui | Mot de passe du compte de base de données RDS MySQL. |
| Non | Jeu de caractères de la table externe MySQL. Valeurs possibles :
|
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
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 |
| 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. |
| Oui | Moteur de stockage de la table externe. Pour lire et écrire des données dans MongoDB, définissez la valeur sur MONGODB. |
| 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
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 |
|
|
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. |
|
|
Oui |
Le moteur de stockage de la table externe. Pour lire et écrire des données dans Tablestore, définissez la valeur sur OTS. |
|
|
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. |
|
|
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
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 |
| 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. |
| Oui | Le moteur de stockage de la table externe. Pour lire et écrire des données dans MaxCompute, définissez la valeur sur ODPS. |
| 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. |
| 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. |
| 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. |
| 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 |
| Oui | Le nom du projet MaxCompute. |
| 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
Pour plus d’informations sur les tables externes OSS, consultez la rubrique Importer des données depuis OSS vers un cluster Data Lakehouse Edition à l’aide d’une table externe.
Pour plus d’informations sur les tables externes RDS MySQL, consultez la rubrique Importer des données depuis RDS MySQL à l’aide d’une table externe.
Pour plus d’informations sur les tables externes MongoDB, consultez la rubrique Importer des données depuis MongoDB à l’aide d’une table externe.
Pour plus d’informations sur les tables externes Tablestore, consultez la rubrique Interroger et importer des données depuis Tablestore.
Pour plus d’informations sur les tables externes MaxCompute, consultez la rubrique Importer des données depuis MaxCompute à l’aide d’une table externe.