All Products
Search
Document Center

AnalyticDB:Impor data MongoDB menggunakan tabel eksternal

Last Updated:Aug 25, 2026

Topik ini menjelaskan cara menggunakan tabel eksternal untuk mengkueri data MongoDB dan mengimpornya ke AnalyticDB for MySQL.

Prasyarat

  • Kluster AnalyticDB for MySQL harus merupakan Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse.

  • Sakelar jaringan ENI Network diaktifkan pada bagian Informasi Jaringan di halaman Cluster Information di konsol AnalyticDB for MySQL.

    Penting

    Mengaktifkan atau menonaktifkan jaringan ENI akan memutus koneksi database selama sekitar 2 menit. Selama periode ini, operasi baca dan tulis tidak dapat dilakukan. Evaluasi dampaknya secara hati-hati sebelum mengaktifkan atau menonaktifkan jaringan ENI.

  • Instans MongoDB dan kluster AnalyticDB for MySQL berada dalam VPC yang sama.

  • Blok CIDR VPC dari kluster AnalyticDB for MySQL telah ditambahkan ke daftar putih instans MongoDB.

Impor data dari dokumen non-nested di MongoDB

Data contoh

Pada contoh ini, koleksi bernama person dibuat di database test_mongodb pada instans MongoDB.

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

Masukkan dokumen ke dalam koleksi 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});

Prosedur

  1. Buka editor pengembangan SQL.

    1. Login ke konsol AnalyticDB for MySQL. Di pojok kiri atas, pilih wilayah tempat kluster berada. Di panel navigasi sebelah kiri, klik Clusters, lalu klik ID kluster target.

    2. Di panel navigasi sebelah kiri, pilih Job Development > SQL Development.

  2. Jalankan pernyataan berikut untuk membuat database eksternal.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Buat tabel eksternal.

    Penting

    Tabel eksternal AnalyticDB for MySQL harus memiliki nama bidang, jumlah bidang, urutan bidang, dan tipe data yang sama dengan dokumen 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",
    }';

    Tabel 1. Parameter

    Parameter

    Deskripsi

    mapped_name

    Nama koleksi MongoDB. Pada contoh ini, namanya adalah person.

    location

    Titik akhir VPC dari instans ApsaraDB for MongoDB.

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

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

    Catatan

    Jangan gunakan titik akhir node secondary untuk menghubungkan ke instans MongoDB.

    username

    Akun database dari instans MongoDB.

    Catatan

    MongoDB memverifikasi akun database dan password di database tujuan. Gunakan akun dari database yang ditentukan dalam titik akhir VPC instans MongoDB. Jika Anda memiliki pertanyaan, hubungi dukungan teknis.

    password

    Password dari akun database MongoDB.

  4. Kueri data.

    Setelah tabel eksternal dibuat, Anda dapat menggunakan pernyataan SELECT untuk mengkueri data dalam koleksi person.

    SELECT * FROM adb_external_db.person;

    Hasil berikut dikembalikan:

    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    3 | jack  |   30 |
    |    4 | lock  |   40 |
    +------+-------+------+
    4 rows in set (0.35 sec)
  5. Buat database dan tabel di kluster AnalyticDB for MySQL untuk menyimpan data yang diimpor dari MongoDB.

    1. Buat database bernama adb_demo.

      CREATE DATABASE adb_demo; 
    2. Buat tabel bernama adb_demo.adb_import_test.

      Penting

      Tabel yang dibuat di kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse harus memiliki nama bidang, jumlah bidang, urutan bidang, dan tipe data yang sama dengan tabel eksternal 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. Impor data dari MongoDB ke kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse.

    • Metode 1: Gunakan pernyataan INSERT INTO untuk mengimpor data. Jika nilai primary key duplikat, data baru akan diabaikan. Ini setara dengan menggunakan INSERT IGNORE INTO. Untuk informasi lebih lanjut, lihat INSERT INTO.

      INSERT INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
    • Metode 2: Gunakan pernyataan INSERT OVERWRITE INTO untuk mengimpor data secara sinkron. Ini akan menimpa data yang sudah ada di tabel.

      INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
    • Metode 3: Gunakan pernyataan INSERT OVERWRITE INTO untuk mengimpor data secara asinkron. Untuk informasi lebih lanjut, lihat Asynchronous write.

      SUBMIT JOB INSERT OVERWRITE adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
  7. Setelah data diimpor, Anda dapat menggunakan pernyataan SELECT untuk mengkueri data di tabel adb_demo.adb_import_test.

    SELECT * FROM adb_demo.adb_import_test;

    Hasil berikut dikembalikan:

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

Kueri dokumen nested di MongoDB

Data contoh

Di database test_mongodb, buat koleksi bernama test_json.

db.createCollection("test_json");

Masukkan dokumen ke dalam koleksi test_json. Bidang city dan name adalah bidang nested.

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

Prosedur

  1. Buka editor pengembangan SQL.

    1. Login ke konsol AnalyticDB for MySQL. Di pojok kiri atas, pilih wilayah tempat kluster berada. Di panel navigasi sebelah kiri, klik Clusters, lalu klik ID kluster target.

    2. Di panel navigasi sebelah kiri, pilih Job Development > SQL Development.

  2. Jalankan pernyataan berikut untuk membuat database eksternal.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Buat tabel eksternal.

    Penting
    • Tabel eksternal AnalyticDB for MySQL harus memiliki nama bidang, jumlah bidang, urutan bidang, dan tipe data yang sama dengan dokumen MongoDB.

    • Tabel eksternal tidak dapat digunakan untuk menulis data ke dokumen nested di 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",
    }';

    Parameter:

    • COLUMN_MAPPING: Menentukan pemetaan antara bidang tabel eksternal dan bidang dokumen MongoDB. Misalnya, pemetaan dibuat antara bidang city pada tabel eksternal dan bidang details.city pada dokumen MongoDB.

    • Untuk informasi tentang parameter lain untuk tabel eksternal, lihat Deskripsi parameter.

  4. Kueri data.

    Setelah tabel eksternal dibuat, Anda dapat menggunakan pernyataan SELECT untuk mengkueri data dalam koleksi test_json.

    SELECT * FROM adb_external_db.test_json;

    Hasil berikut dikembalikan:

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

    Untuk mengimpor data dari dokumen nested di MongoDB ke AnalyticDB for MySQL, Anda harus terlebih dahulu membuat database dan tabel. Untuk informasi lebih lanjut, lihat Langkah 5 hingga 7 di bagian Impor data dari dokumen non-nested di MongoDB pada topik ini.

Kueri bidang ObjectId

Data contoh

Di database test_mongodb, buat koleksi bernama test_objectid.

db.createCollection("test_objectid");

Masukkan dokumen ke dalam koleksi test_objectid.

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

Kueri dokumen dalam koleksi test_objectid.

db.test_objectid.find()

Hasil berikut dikembalikan:

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

Prosedur

  1. Buka editor pengembangan SQL.

    1. Login ke konsol AnalyticDB for MySQL. Di pojok kiri atas, pilih wilayah tempat kluster berada. Di panel navigasi sebelah kiri, klik Clusters, lalu klik ID kluster target.

    2. Di panel navigasi sebelah kiri, pilih Job Development > SQL Development.

  2. Jalankan pernyataan berikut untuk membuat database eksternal.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Buat tabel eksternal.

    Penting

    Tabel eksternal AnalyticDB for MySQL harus memiliki nama bidang, jumlah bidang, urutan bidang, dan tipe data yang sama dengan dokumen 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. Kueri data.

    Setelah tabel eksternal dibuat, Anda dapat menggunakan pernyataan SELECT untuk mengkueri data dalam koleksi test_objectid.

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

    Contoh hasil:

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

    Untuk mengimpor data yang berisi bidang ObjectId ke AnalyticDB for MySQL, Anda harus terlebih dahulu membuat database dan tabel untuk menyimpan data tersebut. Untuk informasi lebih lanjut, lihat Langkah 5 hingga 7 di Impor data dari dokumen non-nested di MongoDB.

Pemetaan tipe data antara tabel eksternal AnalyticDB for MySQL dan koleksi MongoDB

AnalyticDB for MySQL tabel eksternal

Koleksi MongoDB

Boolean

Boolean

ObjectId

ObjectId

String

String

Int

Integer 32-bit, Int

Bigint

Integer 64-bit Long

Double

Double

Date

Date