すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:ApsaraDB for MongoDBからデータをインポートする

最終更新日:Jun 07, 2024

このトピックでは、AnalyticDB for MySQL data Lakehouse Edition (V3.0) の外部テーブルを使用してApsaraDB for MongoDBデータを照会する方法と、ApsaraDB for MongoDBからAnalyticDB for MySQL Data Lakehouse Edition (V3.0) にデータをインポートする方法について説明します。

前提条件

  • AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターは、ApsaraDB for MongoDBインスタンスと同じ仮想プライベートクラウド (VPC) に作成されます。 詳細については、「クラスターの作成」をご参照ください。

  • コンソールの [クラスター情報] ページの [ネットワーク情報] セクションで、AnalyticDB for MySQLクラスターのENIがオンになっています。
  • AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターのVPC CIDRブロックが、ApsaraDB for MongoDBインスタンスのホワイトリストに追加されます。 詳細については、「ApsaraDB For MongoDBインスタンスのIPアドレスホワイトリストの変更」をご参照ください。

ApsaraDB for MongoDBのネストされていないドキュメントからデータをインポートする

サンプルデータ

この例では、ApsaraDB for mongodbインスタンスのtest_mongodbデータベースにpersonという名前のコレクションが作成されています。

test_mongodbを使用します。db.createCollection("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}); 

手順

  1. SQLエディターに移動します。
    1. AnalyticDB for MySQLコンソールにログインします。
    2. ページの左上隅で、クラスターが存在するリージョンを選択します。
    3. 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
    4. Lake Warehouse Edition(3.0) タブでクラスターを見つけ、クラスター ID をクリックします。
    5. 左側のナビゲーションウィンドウで、[ジョブ開発] > Sql開発 を選択します。
  2. 次のステートメントを実行して、外部データベースを作成します。
    外部データベースの作成adb_external_db;
  3. 外部テーブルを作成します。

    重要

    AnalyticDB for MySQL外部テーブルは、ApsaraDB for MongoDBコレクションと同じフィールドの名前、数量、順序、およびデータタイプを持つ必要があります。

    外部テーブルの作成adb_external_db.person (
      id int,
      名前文字列,
      年齢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" 、} '; 

    表 1 Parameters

    パラメーター

    説明

    mapped_name

    ApsaraDB for MongoDBコレクションの名前。 この例では、personが使用されます。

    場所

    ApsaraDB for MongoDBインスタンスへの接続に使用されるVPCエンドポイント。 VPCエンドポイントの取得方法については、「」をご参照ください。インスタンス接続の概要

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

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

    説明

    ApsaraDB for MongoDBインスタンスに接続するときは、セカンダリノードのエンドポイントを使用しないでください。

    username

    ApsaraDB for MongoDBインスタンスへの接続に使用されるデータベースアカウントの名前。 データベースアカウントの作成方法については、「MongoDBデータベースユーザーの権限の管理」をご参照ください。

    説明

    ApsaraDB for MongoDBは、指定されたデータベースアカウントとパスワードを検証します。 ApsaraDB for MongoDBインスタンスのVPCエンドポイントに含まれるデータベースアカウントを使用する必要があります。 ご不明な点がございましたら、テクニカルサポートにお問い合わせください。

    password

    データベースアカウントのパスワードを設定します。

  4. データの照会

    外部テーブルの作成後、SELECTステートメントを実行してpersonコレクションのデータを照会できます。

    SELECT * からadb_external_db.person;

    サンプル結果:

    + ------ ------- --------
    | id | 名前 | 年齢 |
    + ----- + ------- + ------- +
    | 1 | ジェームズ | 10 |
    | 2 | ボンド | 20 |
    | 3 | ジャック | 30 |
    | 4 | ロック | 40 |
    + ----- + ------- + ------- +
    セットの4列 (0.35秒) 
  5. データベースとテーブルを作成します。AnalyticDB for MySQL データレイクハウスエディション (V3.0)ApsaraDB for MongoDBインスタンスからインポートされたデータを保存します。

    1. という名前のデータベースを作成します。adb_demo.

      CREATE DATABASE adb_demo;
    2. という名前のテーブルを作成します。adb_demo.adb_import_test.

      重要

      AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターに作成されるテーブルは、AnalyticDB for MySQL外部テーブルと同じフィールドの名前、数量、順序、およびデータ型を持つ必要があります。

      CREATE TABLE IF NOT EXISTS adb_demo.adb_import_test(id int、name varchar(1023) 、age int ) DISTRIBUTE BY HASH(id);
  6. ApsaraDB for MongoDBインスタンスからAnalyticDB for MySQL データレイクハウスエディション (V3.0)クラスター

    • 方法1: INSERT INTOステートメントを実行してデータをインポートします。 主キーの値が重複している場合、データは繰り返し挿入されず、INSERT INTOステートメントはINSERT IGNORE INTOと同等です。 詳細については、「INSERT INTO」をご参照ください。

      adb_demo.adb_import_test SELECT * からadb_external_db.personに挿入します。
    • 方法2: INSERT OVERWRITE INTOステートメントを実行して、データを同期的にインポートします。 主キーの値が重複している場合、元の値は新しい値で上書きされます。

      INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * からadb_external_db.person;
    • 方法3: INSERT OVERWRITE INTOステートメントを実行して、データを非同期的にインポートします。 詳細については、「INSERT OVERWRITE SELECT」トピックの「非同期書き込み」セクションをご参照ください。

      ジョブ挿入の上書きadb_demo.adb_import_test SELECT * からadb_external_db.person;
  7. データがインポートされたら、SELECTステートメントを実行して、adb_demo.adb_import_testテーブルを使用します。

    SELECT * からadb_demo.adb_import_test;

    サンプル結果:

    + ------ ------- --------
    | id | 名前 | 年齢 |
    + ----- + ------- + ------- +
    | 1 | ジェームズ | 10 |
    | 2 | ボンド | 20 |
    | 3 | ジャック | 30 |
    | 4 | ロック | 40 |
    + ----- + ------- + ------- + 

ApsaraDB for MongoDBのネストされたドキュメントのクエリデータ

サンプルデータ

この例では、test_jsonという名前のコレクションがApsaraDB for mongodbインスタンスのtest_mongodbデータベースに作成されます。

db.createCollection("test_json");

ドキュメントがtest_jsonコレクションに挿入されます。 cityフィールドとnameフィールドはネストされたフィールドです。

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

手順

  1. SQLエディターに移動します。
    1. AnalyticDB for MySQLコンソールにログインします。
    2. ページの左上隅で、クラスターが存在するリージョンを選択します。
    3. 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
    4. Lake Warehouse Edition(3.0) タブでクラスターを見つけ、クラスター ID をクリックします。
    5. 左側のナビゲーションウィンドウで、[ジョブ開発] > Sql開発 を選択します。
  2. 次のステートメントを実行して、外部データベースを作成します。
    外部データベースの作成adb_external_db;
  3. 外部テーブルを作成します。

    重要
    • AnalyticDB for MySQL外部テーブルは、ApsaraDB for MongoDBコレクションと同じフィールドの名前、数量、順序、およびデータタイプを持つ必要があります。

    • 外部テーブルを使用してApsaraDB for MongoDBのネストされたドキュメントにデータをインポートすることはできません。

    外部テーブルの作成adb_external_db.test_json (
      id int,
      都市文字列、
      名前文字列
    ) 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;nam e,details.name" 、} '; 

    パラメーター:

    • COLUMN_MAPPING: 外部テーブルフィールドとApsaraDB for MongoDBドキュメントフィールド間のマッピングを定義します。 たとえば、外部テーブルのcityフィールドとApsaraDB For MongoDBドキュメントのdetails.cityフィールドの間のマッピングが作成されます。

    • 外部テーブルの作成に使用されるその他のパラメーターについては、このトピックの「パラメーター」表を参照してください。

  4. データの照会

    外部テーブルの作成後、SELECTステートメントを実行してtest_jsonコレクションのデータを照会できます。

    SELECT * からadb_external_db.test_json;

    サンプル結果:

    + ------ --------- ---------- +
    | id | 都市 | 名前 |
    + ----- ---------- --------- +
    | 1 | 杭州 | ジャック |
    + ----- ---------- --------- + 
    説明

    ApsaraDB for MongoDBのネストされたドキュメントからAnalyticDB for MySQLにデータをインポートするには、まずデータベースとテーブルを作成する必要があります。 詳細については、このトピックの「ApsaraDB For MongoDBのネストされていないドキュメントからデータをインポートする」の手順5〜7を参照してください。

ObjectIdフィールドのクエリデータ

サンプルデータ

この例では、test_objectidという名前のコレクションがApsaraDB for mongodbインスタンスのtest_mongodbデータベースに作成されます。

db.createCollection("test_objectid");

ドキュメントがtest_objectidコレクションに挿入されます。

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

test_objectidコレクションのデータが照会されます。

db.test_objectid.find()

サンプル結果:

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

手順

  1. SQLエディターに移動します。
    1. AnalyticDB for MySQLコンソールにログインします。
    2. ページの左上隅で、クラスターが存在するリージョンを選択します。
    3. 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
    4. Lake Warehouse Edition(3.0) タブでクラスターを見つけ、クラスター ID をクリックします。
    5. 左側のナビゲーションウィンドウで、[ジョブ開発] > Sql開発 を選択します。
  2. 次のステートメントを実行して、外部データベースを作成します。
    外部データベースの作成adb_external_db;
  3. 外部テーブルを作成します。

    重要

    AnalyticDB for MySQL外部テーブルは、ApsaraDB for MongoDBコレクションと同じフィールドの名前、数量、順序、およびデータタイプを持つ必要があります。

    外部テーブルの作成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. データの照会

    外部テーブルの作成後、SELECTステートメントを実行してtest_objectidコレクションのデータを照会できます。

    SELECTキャスト (文字列として_id) FROM adb_external_db.test_objectid;

    サンプル結果:

    + ---------------------------- +
    | CAST(_id AS文字列) |
    + ---------------------------- +
    | 641002ad883a73eb0d7291a7 |
    + ---------------------------- + 
    説明

    ObjectIdフィールドからAnalyticDB for MySQLにデータをインポートするには、まずデータベースとテーブルを作成する必要があります。 詳細については、このトピックの「ApsaraDB For MongoDBのネストされていないドキュメントからデータをインポートする」の手順5〜7を参照してください。

外部テーブルでサポートされるデータ型

AnalyticDB for MySQL外部テーブルでサポートされているデータ型

ApsaraDB for MongoDBコレクションでサポートされているデータ型

Boolean

Boolean

ObjectId

ObjectId

String

String

Int

32ビット整数とInt

Bigint

64ビット整数長

Double

Double

日付

日付