Todos os produtos
Search
Central de documentação

AnalyticDB:Importar dados do MongoDB usando tabelas externas

Última atualização: Aug 24, 2026

Este tópico descreve como usar tabelas externas para consultar dados do MongoDB e importá-los para o AnalyticDB for MySQL.

Pré-requisitos

  • O cluster do AnalyticDB for MySQL deve ser da Enterprise Edition, Basic Edition ou Data Lakehouse Edition.

  • A chave ENI Network está ativada na seção Network Information da página Cluster Information no console do AnalyticDB for MySQL.

    Importante

    Ativar ou desativar a rede ENI interrompe a conexão com o banco de dados por cerca de 2 minutos. Durante esse período, não é possível executar operações de leitura e escrita. Avalie cuidadosamente o impacto antes de ativar ou desativar a rede ENI.

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

  • O bloco CIDR da VPC do cluster do AnalyticDB for MySQL foi adicionado à lista de permissões da instância do MongoDB.

Importar dados de documentos não aninhados no MongoDB

Dados de exemplo

Neste exemplo, uma coleção chamada person é criada no banco de dados test_mongodb de uma instância do MongoDB.

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

Insira documentos na coleção 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});

Procedimento

  1. Acesse o editor de desenvolvimento SQL.

    1. Faça login no console do AnalyticDB for MySQL. No canto superior esquerdo, selecione a região onde o cluster está localizado. No painel de navegação à esquerda, clique em Clusters e, em seguida, clique no ID do cluster de destino.

    2. No painel de navegação à esquerda, escolha Job Development > SQL Development.

  2. Execute a seguinte instrução para criar um banco de dados externo.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Crie uma tabela externa.

    Importante

    A tabela externa do AnalyticDB for MySQL deve ter os mesmos nomes de campos, quantidade de campos, ordem dos campos e tipos de dados do documento do 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",
    }';

    Tabela 1. Parâmetros

    Parâmetro

    Descrição

    mapped_name

    Nome da coleção do MongoDB. Neste exemplo, o nome é person.

    location

    Endpoint da VPC da instância do ApsaraDB for MongoDB.

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

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

    Nota

    Não use endpoints de nós secundários para se conectar à instância do MongoDB.

    username

    Conta do banco de dados da instância do MongoDB.

    Nota

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

    password

    Senha da conta do banco de dados MongoDB.

  4. Visualize os dados.

    Após criar a tabela externa, use uma instrução SELECT para consultar dados na coleção person.

    SELECT * FROM adb_external_db.person;

    Resultado retornado:

    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    3 | jack  |   30 |
    |    4 | lock  |   40 |
    +------+-------+------+
    4 rows in set (0.35 sec)
  5. Crie um banco de dados e uma tabela no cluster do AnalyticDB for MySQL para armazenar os dados importados do MongoDB.

    1. Crie um banco de dados chamado adb_demo.

      CREATE DATABASE adb_demo; 
    2. Crie uma tabela chamada adb_demo.adb_import_test.

      Importante

      A tabela criada no cluster do AnalyticDB for MySQL Enterprise Edition, Basic Edition ou Data Lakehouse Edition deve ter os mesmos nomes de campos, quantidade de campos, ordem dos campos e tipos de dados da tabela externa do 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. Importe os dados do MongoDB para o cluster do AnalyticDB for MySQL Enterprise Edition, Basic Edition ou Data Lakehouse Edition.

    • Método 1: Use a instrução INSERT INTO para importar dados. Se houver duplicidade de valor de chave primária, os novos dados serão ignorados. Isso equivale a usar INSERT IGNORE INTO. Para mais informações, consulte INSERT INTO.

      INSERT INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
    • Método 2: Use a instrução INSERT OVERWRITE INTO para importar dados de forma síncrona. Essa operação substitui os dados existentes na tabela.

      INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
    • Método 3: Use a instrução INSERT OVERWRITE INTO para importar dados de forma assíncrona. Para mais informações, consulte Gravação assíncrona.

      SUBMIT JOB INSERT OVERWRITE adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
  7. Após importar os dados, use uma instrução SELECT para consultar dados na tabela adb_demo.adb_import_test.

    SELECT * FROM adb_demo.adb_import_test;

    Resultado retornado:

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

Consultar documentos aninhados no MongoDB

Dados de exemplo

No banco de dados test_mongodb, crie uma coleção chamada test_json.

db.createCollection("test_json");

Insira um documento na coleção test_json. Os campos city e name são campos aninhados.

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

Procedimento

  1. Acesse o editor de desenvolvimento SQL.

    1. Faça login no console do AnalyticDB for MySQL. No canto superior esquerdo, selecione a região onde o cluster está localizado. No painel de navegação à esquerda, clique em Clusters e, em seguida, clique no ID do cluster de destino.

    2. No painel de navegação à esquerda, escolha Job Development > SQL Development.

  2. Execute a seguinte instrução para criar um banco de dados externo.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Crie uma tabela externa.

    Importante
    • A tabela externa do AnalyticDB for MySQL deve ter os mesmos nomes de campos, quantidade de campos, ordem dos campos e tipos de dados do documento do MongoDB.

    • Não é possível usar tabelas externas para gravar dados em documentos aninhados no 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",
    }';

    Parâmetros:

    • COLUMN_MAPPING: Defina os mapeamentos entre os campos da tabela externa e os campos do documento do MongoDB. Por exemplo, cria-se um mapeamento entre o campo city da tabela externa e o campo details.city do documento do MongoDB.

    • Para obter informações sobre outros parâmetros da tabela externa, consulte Descrições de parâmetros.

  4. Visualize os dados.

    Após criar a tabela externa, use uma instrução SELECT para consultar dados na coleção test_json.

    SELECT * FROM adb_external_db.test_json;

    Resultado retornado:

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

    Para importar dados de documentos aninhados no MongoDB para o AnalyticDB for MySQL, crie primeiro um banco de dados e uma tabela. Para mais informações, consulte as etapas 5 a 7 na seção Importar dados de documentos não aninhados no MongoDB deste tópico.

Consultar campos ObjectId

Dados de exemplo

No banco de dados test_mongodb, crie uma coleção chamada test_objectid.

db.createCollection("test_objectid");

Insira um documento na coleção test_objectid.

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

Consulte os documentos na coleção test_objectid.

db.test_objectid.find()

Resultado retornado:

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

Procedimento

  1. Acesse o editor de desenvolvimento SQL.

    1. Faça login no console do AnalyticDB for MySQL. No canto superior esquerdo, selecione a região onde o cluster está localizado. No painel de navegação à esquerda, clique em Clusters e, em seguida, clique no ID do cluster de destino.

    2. No painel de navegação à esquerda, escolha Job Development > SQL Development.

  2. Execute a seguinte instrução para criar um banco de dados externo.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Crie uma tabela externa.

    Importante

    A tabela externa do AnalyticDB for MySQL deve ter os mesmos nomes de campos, quantidade de campos, ordem dos campos e tipos de dados do documento do 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. Visualize os dados.

    Após criar a tabela externa, use uma instrução SELECT para consultar dados na coleção test_objectid.

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

    Resultado de exemplo:

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

    Para importar dados que contêm campos ObjectId para o AnalyticDB for MySQL, crie primeiro um banco de dados e uma tabela para armazenar os dados. Para mais informações, consulte as etapas 5 a 7 em Importar dados de documentos não aninhados no MongoDB.

Mapeamentos de tipos de dados entre tabelas externas do AnalyticDB for MySQL e coleções do MongoDB

Tabela externa do AnalyticDB for MySQL

Coleção do MongoDB

Boolean

Boolean

ObjectId

ObjectId

String

String

Int

32-bit Integer, Int

Bigint

64-bit Integer Long

Double

Double

Date

Date