Tüm Ürünler
Search
Belge Merkezi

AnalyticDB:Dış tablolar kullanarak MongoDB verilerini aktarma

Son Güncelleme:Oct 05, 2026

Bu konu, MongoDB verilerini sorgulamak ve verileri AnalyticDB for MySQL içine aktarmak için dış tabloların nasıl kullanılacağını açıklar.

Önkoşullar

  • AnalyticDB for MySQL kümeniz Enterprise Edition, Basic Edition veya Data Lakehouse Edition sürümündedir.

  • AnalyticDB for MySQL konsolundaki Cluster Information sayfasının Network Information bölümünde ENI Network anahtarı etkinleştirilmiştir.

    Önemli

    ENI ağını etkinleştirmek veya devre dışı bırakmak veritabanı bağlantısını yaklaşık 2 dakika kesintiye uğratır. Bu süre zarfında okuma ve yazma işlemleri yapılamaz. ENI ağını etkinleştirmeden veya devre dışı bırakmadan önce etkileri dikkatlice değerlendirin.

  • MongoDB örneği ve AnalyticDB for MySQL kümesi aynı VPC içinde yer alır.

  • AnalyticDB for MySQL kümesinin VPC CIDR bloğu, MongoDB örneğinin izin listesine eklenmiştir.

MongoDB'deki iç içe olmayan belgelerden veri aktarma

Örnek veriler

Bu örnekte, bir MongoDB örneğinin test_mongodb veritabanında person adlı bir koleksiyon oluşturulur.

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

person koleksiyonuna belgeler ekleyin.

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});

Yordam

  1. SQL geliştirme düzenleyicisine gidin.

    1. AnalyticDB for MySQL konsoluna giriş yapın. Sol üst köşeden kümenin bulunduğu bölgeyi seçin. Sol gezinme bölmesinde Clusters öğesine tıklayın ve ardından hedef kümenin ID değerine tıklayın.

    2. Sol gezinme bölmesinde Job Development > SQL Development seçeneklerini belirleyin.

  2. Dış bir veritabanı oluşturmak için aşağıdaki deyimi çalıştırın.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Dış bir tablo oluşturun.

    Önemli

    AnalyticDB for MySQL dış tablosu, MongoDB belgesiyle aynı alan adlarına, alan sayısına, alan sırasına ve veri türlerine sahip olmalıdır.

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

    Tablo 1. Parametreler

    Parameter

    Description

    mapped_name

    MongoDB koleksiyonunun adı. Bu örnekte ad person şeklindedir.

    location

    ApsaraDB for MongoDB örneğinin VPC uç noktası.

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

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

    Not

    MongoDB örneğine bağlanmak için ikincil düğümlerin uç noktalarını kullanmayın.

    username

    MongoDB örneğinin veritabanı hesabı.

    Not

    MongoDB, hedef veritabanındaki veritabanı hesabını ve parolayı doğrular. MongoDB örneğinin VPC uç noktasında belirtilen veritabanının hesabını kullanın. Sorularınız varsa teknik destek ile iletişime geçin.

    password

    MongoDB veritabanı hesabının parolası.

  4. Verileri sorgulayın.

    Dış tablo oluşturulduktan sonra, person koleksiyonundaki verileri sorgulamak için bir SELECT deyimi kullanabilirsiniz.

    SELECT * FROM adb_external_db.person;

    Aşağıdaki sonuç döndürülür:

    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    3 | jack  |   30 |
    |    4 | lock  |   40 |
    +------+-------+------+
    4 rows in set (0.35 sec)
  5. MongoDB'den aktarılan verileri depolamak için AnalyticDB for MySQL kümesinde bir veritabanı ve tablo oluşturun.

    1. adb_demo adlı bir veritabanı oluşturun.

      CREATE DATABASE adb_demo; 
    2. adb_demo.adb_import_test adlı bir tablo oluşturun.

      Önemli

      AnalyticDB for MySQL Enterprise Edition, Basic Edition veya Data Lakehouse Edition kümesinde oluşturulan tablo, AnalyticDB for MySQL dış tablosuyla aynı alan adlarına, alan sayısına, alan sırasına ve veri türlerine sahip olmalıdır.

       CREATE TABLE IF NOT EXISTS adb_demo.adb_import_test(id int,name varchar(1023),age int ) DISTRIBUTED BY HASH(id);
  6. Verileri MongoDB'den AnalyticDB for MySQL Enterprise Edition, Basic Edition veya Data Lakehouse Edition kümesine aktarın.

    • Yöntem 1: Verileri aktarmak için INSERT INTO deyimini kullanın. Birincil anahtar değeri yinelenirse yeni veriler yoksayılır. Bu, INSERT IGNORE INTO kullanmaya eşdeğerdir. Daha fazla bilgi için bkz. INSERT INTO.

      INSERT INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
    • Yöntem 2: Verileri senkronize olarak aktarmak için INSERT OVERWRITE INTO deyimini kullanın. Bu işlem, tabloda bulunan mevcut verilerin üzerine yazar.

      INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
    • Yöntem 3: Verileri eşzamansız olarak aktarmak için INSERT OVERWRITE INTO deyimini kullanın. Daha fazla bilgi için bkz. Eşzamansız yazma.

      SUBMIT JOB INSERT OVERWRITE adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
  7. Veriler aktarıldıktan sonra, adb_demo.adb_import_test tablosundaki verileri sorgulamak için bir SELECT deyimi kullanabilirsiniz.

    SELECT * FROM adb_demo.adb_import_test;

    Aşağıdaki sonuç döndürülür:

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

MongoDB'deki iç içe geçmiş belgeleri sorgulama

Örnek veriler

test_mongodb veritabanında test_json adlı bir koleksiyon oluşturun.

db.createCollection("test_json");

test_json koleksiyonuna bir belge ekleyin. city ve name alanları iç içe geçmiş alanlardır.

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

Yordam

  1. SQL geliştirme düzenleyicisine gidin.

    1. AnalyticDB for MySQL konsoluna giriş yapın. Sol üst köşeden kümenin bulunduğu bölgeyi seçin. Sol gezinme bölmesinde Clusters öğesine tıklayın ve ardından hedef kümenin ID değerine tıklayın.

    2. Sol gezinme bölmesinde Job Development > SQL Development seçeneklerini belirleyin.

  2. Dış bir veritabanı oluşturmak için aşağıdaki deyimi çalıştırın.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Dış bir tablo oluşturun.

    Önemli
    • AnalyticDB for MySQL dış tablosu, MongoDB belgesiyle aynı alan adlarına, alan sayısına, alan sırasına ve veri türlerine sahip olmalıdır.

    • Dış tablolar, MongoDB'deki iç içe geçmiş belgelere veri yazmak için kullanılamaz.

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

    Parametreler:

    • COLUMN_MAPPING: Dış tablonun alanları ile MongoDB belgesinin alanları arasındaki eşlemeleri tanımlar. Örneğin, dış tablonun city alanı ile MongoDB belgesinin details.city alanı arasında bir eşleme oluşturulur.

    • Dış tablo için diğer parametreler hakkında bilgi edinmek için bkz. Parametre açıklamaları.

  4. Verileri sorgulayın.

    Dış tablo oluşturulduktan sonra, test_json koleksiyonundaki verileri sorgulamak için bir SELECT deyimi kullanabilirsiniz.

    SELECT * FROM adb_external_db.test_json;

    Aşağıdaki sonuç döndürülür:

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

    İç içe geçmiş belgelerdeki verileri MongoDB'den AnalyticDB for MySQL içine aktarmak için öncelikle bir veritabanı ve tablo oluşturmanız gerekir. Daha fazla bilgi için bu konunun MongoDB'deki iç içe olmayan belgelerden veri aktarma bölümündeki 5. ila 7. adımlara bakın.

ObjectId alanlarını sorgulama

Örnek veriler

test_mongodb veritabanında test_objectid adlı bir koleksiyon oluşturun.

db.createCollection("test_objectid");

test_objectid koleksiyonuna bir belge ekleyin.

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

test_objectid koleksiyonundaki belgeleri sorgulayın.

db.test_objectid.find()

Aşağıdaki sonuç döndürülür:

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

Yordam

  1. SQL geliştirme düzenleyicisine gidin.

    1. AnalyticDB for MySQL konsoluna giriş yapın. Sol üst köşeden kümenin bulunduğu bölgeyi seçin. Sol gezinme bölmesinde Clusters öğesine tıklayın ve ardından hedef kümenin ID değerine tıklayın.

    2. Sol gezinme bölmesinde Job Development > SQL Development seçeneklerini belirleyin.

  2. Dış bir veritabanı oluşturmak için aşağıdaki deyimi çalıştırın.

    CREATE EXTERNAL DATABASE adb_external_db;
  3. Dış bir tablo oluşturun.

    Önemli

    AnalyticDB for MySQL dış tablosu, MongoDB belgesiyle aynı alan adlarına, alan sayısına, alan sırasına ve veri türlerine sahip olmalıdır.

    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. Verileri sorgulayın.

    Dış tablo oluşturulduktan sonra, test_objectid koleksiyonundaki verileri sorgulamak için bir SELECT deyimi kullanabilirsiniz.

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

    Örnek sonuç:

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

    ObjectId alanları içeren verileri AnalyticDB for MySQL içine aktarmak için öncelikle verileri depolamak üzere bir veritabanı ve tablo oluşturmanız gerekir. Daha fazla bilgi için MongoDB'deki iç içe olmayan belgelerden veri aktarma bölümündeki 5. ila 7. adımlara bakın.

AnalyticDB for MySQL dış tabloları ile MongoDB koleksiyonları arasında veri türü eşlemeleri


AnalyticDB for MySQL dış tablo


MongoDB koleksiyonu


Boolean


Boolean


ObjectId


ObjectId


String


String


Int


32-bit Integer, Int


Bigint


64-bit Integer Long


Double


Double


Date


Date