Tous les produits
Search
Centre de documentation

AnalyticDB:Importer des données MongoDB à l'aide de tables externes

Dernière mise à jour :Aug 24, 2026

Cette rubrique explique comment utiliser des tables externes pour interroger les données MongoDB et les importer dans AnalyticDB for MySQL.

Prérequis

  • Le cluster AnalyticDB for MySQL doit être de type Enterprise Edition, Basic Edition ou Data Lakehouse Edition.

  • L'option ENI Network est activée dans la section Network Information de la page Cluster Information de la console AnalyticDB for MySQL.

    Important

    L'activation ou la désactivation du réseau ENI interrompt la connexion à la base de données pendant environ 2 minutes. Durant cette période, les opérations de lecture et d'écriture sont impossibles. Évaluez soigneusement l'impact avant d'activer ou de désactiver le réseau ENI.

  • L'instance MongoDB et le cluster AnalyticDB for MySQL se trouvent dans le même VPC.

  • Le bloc CIDR du VPC du cluster AnalyticDB for MySQL a été ajouté à la liste d'autorisation de l'instance MongoDB.

Importer des données depuis des documents non imbriqués dans MongoDB

Exemple de données

Dans cet exemple, une collection nommée person est créée dans la base de données test_mongodb d'une instance MongoDB.

use test_mongodb;
db.createCollection("person");

Insérez des documents dans la collection person.

db.person.insert({"id":1,"name":"james","age":10});
db.person.insert({"id":2,"name":"bond","age":20});
db.person.insert({"id":3,"name":"jack","age":30});
db.person.insert({"id":4,"name":"lock","age":40});

Procédure

  1. Accédez à l'éditeur de développement SQL.

    1. Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche, sélectionnez la région où réside le cluster. Dans le volet de navigation de gauche, cliquez sur Clusters, puis cliquez sur l'ID du cluster cible.

    2. Dans le volet de navigation de gauche, choisissez Job Development > SQL Development.

  2. Exécutez l'instruction suivante pour créer une base de données externe.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Créez une table externe.

    Important

    La table externe AnalyticDB for MySQL doit comporter les mêmes noms de champs, nombre de champs, ordre des champs et types de données que le document MongoDB.

    CREATE EXTERNAL TABLE adb_external_db.person (
      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",
    }';

    Tableau 1. Paramètres

    Paramètre

    Description

    mapped_name

    Nom de la collection MongoDB. Dans cet exemple, le nom est person.

    location

    Le point de terminaison VPC de l'instance ApsaraDB for MongoDB.

    Format : mongodb://testuser:**@dds-bp113d414bca8.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8**.mongodb.rds.aliyuncs.com:3717/database.

    Exemple : mongodb://testuser:**@dds-bp113d414bca8.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8**.mongodb.rds.aliyuncs.com:3717/test_mongodb.

    Remarque

    N'utilisez pas les points de terminaison des nœuds secondaires pour vous connecter à l'instance MongoDB.

    username

    Le 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 de destination. 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 questions, contactez le support technique.

    password

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

  4. Interrogez les données.

    Une fois la table externe créée, utilisez une instruction SELECT pour interroger les données de la collection person.

    SELECT * FROM adb_external_db.person;

    Le résultat suivant est renvoyé :

    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    3 | jack  |   30 |
    |    4 | lock  |   40 |
    +------+-------+------+
    4 rows in set (0.35 sec)
  5. Créez une base de données et une table dans le cluster AnalyticDB for MySQL pour stocker les données importées depuis MongoDB.

    1. Créez une base de données nommée adb_demo.

      CREATE DATABASE adb_demo; 
    2. Créez une table nommée adb_demo.adb_import_test.

      Important

      La table créée dans le cluster AnalyticDB for MySQL Enterprise Edition, Basic Edition ou Data Lakehouse Edition doit comporter les mêmes noms de champs, nombre de champs, ordre des champs et types de données que la table externe AnalyticDB for MySQL.

       CREATE TABLE IF NOT EXISTS adb_demo.adb_import_test(id int,name varchar(1023),age int ) DISTRIBUTED BY HASH(id);
  6. Importez les données de MongoDB vers le cluster AnalyticDB for MySQL Enterprise Edition, Basic Edition ou Data Lakehouse Edition.

    • Méthode 1 : Utilisez l'instruction INSERT INTO pour importer les données. Si une valeur de clé primaire est dupliquée, les nouvelles données sont ignorées. Cela équivaut à utiliser INSERT IGNORE INTO. Pour plus d'informations, consultez la rubrique INSERT INTO.

      INSERT INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
    • Méthode 2 : Utilisez l'instruction INSERT OVERWRITE INTO pour importer les données de manière synchrone. Cette opération écrase les données existantes dans la table.

      INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
    • Méthode 3 : Utilisez l'instruction INSERT OVERWRITE INTO pour importer les données de manière asynchrone. Pour plus d'informations, consultez la rubrique Asynchronous write.

      SUBMIT JOB INSERT OVERWRITE adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
  7. Une fois les données importées, utilisez une instruction SELECT pour interroger les données de la table adb_demo.adb_import_test.

    SELECT * FROM adb_demo.adb_import_test;

    Le résultat suivant est renvoyé :

    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    3 | jack  |   30 |
    |    4 | lock  |   40 |
    +------+-------+------+

Interroger des documents imbriqués dans MongoDB

Exemple de données

Dans la base de données test_mongodb, créez une collection nommée test_json.

db.createCollection("test_json");

Insérez un document dans la collection test_json. Les champs city et name sont des champs imbriqués.

db.test_json.insert(    {
        'id': 1,
        'details':{'city': "hangzhou", "name":"jack"}
    })

Procédure

  1. Accédez à l'éditeur de développement SQL.

    1. Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche, sélectionnez la région où réside le cluster. Dans le volet de navigation de gauche, cliquez sur Clusters, puis cliquez sur l'ID du cluster cible.

    2. Dans le volet de navigation de gauche, choisissez Job Development > SQL Development.

  2. Exécutez l'instruction suivante pour créer une base de données externe.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Créez une table externe.

    Important
    • La table externe AnalyticDB for MySQL doit comporter les mêmes noms de champs, nombre de champs, ordre des champs et types de données que le document MongoDB.

    • Les tables externes ne permettent pas d'écrire des données dans des documents imbriqués de MongoDB.

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

    Paramètres :

    • COLUMN_MAPPING : définit les mappages entre les champs de la table externe et les champs du document MongoDB. Par exemple, un mappage est créé entre le champ city de la table externe et le champ details.city du document MongoDB.

    • Pour obtenir des informations sur les autres paramètres de la table externe, consultez les Descriptions des paramètres.

  4. Interrogez les données.

    Une fois la table externe créée, utilisez une instruction SELECT pour interroger les données de la collection test_json.

    SELECT * FROM adb_external_db.test_json;

    Le résultat suivant est renvoyé :

    +------+----------+-------+
    | id   |  city    |  name |
    +------+----------+-------+
    |    1 | hangzhou |  jack |
    +------+----------+-------+
    Remarque

    Pour importer des données depuis des documents imbriqués de MongoDB vers AnalyticDB for MySQL, vous devez d'abord créer une base de données et une table. Pour plus d'informations, reportez-vous aux étapes 5 à 7 de la section Importer des données depuis des documents non imbriqués dans MongoDB de cette rubrique.

Interroger des champs ObjectId

Exemple de données

Dans la base de données test_mongodb, créez une collection nommée test_objectid.

db.createCollection("test_objectid");

Insérez un document dans la collection test_objectid.

db.test_objectid.insert(    {
        'id': 1,
    })

Interrogez les documents de la collection test_objectid.

db.test_objectid.find()

Le résultat suivant est renvoyé :

{
   "_id":"ObjectId("641002ad883a73eb0d7291a7")"
   "id":1
}

Procédure

  1. Accédez à l'éditeur de développement SQL.

    1. Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche, sélectionnez la région où réside le cluster. Dans le volet de navigation de gauche, cliquez sur Clusters, puis cliquez sur l'ID du cluster cible.

    2. Dans le volet de navigation de gauche, choisissez Job Development > SQL Development.

  2. Exécutez l'instruction suivante pour créer une base de données externe.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Créez une table externe.

    Important

    La table externe AnalyticDB for MySQL doit comporter les mêmes noms de champs, nombre de champs, ordre des champs et types de données que le document MongoDB.

    CREATE EXTERNAL TABLE adb_external_db.test_objectid (
      id int,
      _id objectid
    ) ENGINE = 'MONGODB' TABLE_PROPERTIES ='{
    "mapped_name":"test_objectid",
    "location":"mongodb://testuser:****@dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717/test_mongodb",
    "username":"testuser",
    "password":"password",
    }';
  4. Interrogez les données.

    Une fois la table externe créée, utilisez une instruction SELECT pour interroger les données de la collection test_objectid.

    SELECT cast(_id as string) FROM adb_external_db.test_objectid;

    Exemple de résultat :

    +----------------------------+
    |    CAST(_id AS string)     | 
    +----------------------------+
    |  641002ad883a73eb0d7291a7  |
    +----------------------------+
    Remarque

    Pour importer des données contenant des champs ObjectId dans AnalyticDB for MySQL, vous devez d'abord créer une base de données et une table pour stocker les données. Pour plus d'informations, reportez-vous aux étapes 5 à 7 de la section Importer des données depuis des documents non imbriqués dans MongoDB.

Mappages de types de données entre les tables externes AnalyticDB for MySQL et les collections MongoDB

AnalyticDB for MySQL table externe

Collection MongoDB

Boolean

Boolean

ObjectId

ObjectId

String

String

Int

32-bit Integer, Int

Bigint

64-bit Integer Long

Double

Double

Date

Date