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

AnalyticDB:外部テーブルを使用して RDS for MySQL からデータをインポートする

最終更新日:Oct 21, 2025

RDS for MySQL から AnalyticDB for MySQL にデータをインポートして、複数のソースからのデータを統合し、AnalyticDB for MySQL で複雑なクエリ分析を実行できます。また、集計された主要なメトリックを RDS for MySQL に書き戻すこともできます。

前提条件

  • RDS for MySQL インスタンスと AnalyticDB for MySQL クラスターは同じ VPC 内にあります。

  • AnalyticDB for MySQL クラスターが存在する VPC の CIDR ブロックが、RDS for MySQL インスタンスのホワイトリストに追加されています。

  • AnalyticDB for MySQL Enterprise EditionBasic EditionData Lakehouse Edition、または Data Warehouse Edition (Elastic Mode) クラスターの場合、AnalyticDB for MySQL コンソールの [クラスター情報] ページの [ネットワーク情報] セクションで [Elastic Network Interface (ENI) ネットワーク] スイッチが有効になっています。

    重要

    ENI ネットワークを有効または無効にすると、データベース接続が約 2 分間中断されます。この期間中、読み取りおよび書き込み操作は利用できません。ENI ネットワークを有効または無効にする前に、影響を評価してください。

データ準備

この Topic の例では、RDS for MySQL データベース test_adb には、person という名前のテーブルが含まれています:

CREATE TABLE goods (
   goods_id bigint(20) NOT NULL,
   price double NOT NULL,
   class bigint(20) NOT NULL,
   name varchar(32) NOT NULL,
   update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   PRIMARY KEY (goods_id)
);

次の例では、person テーブルにデータを挿入します:

INSERT INTO test_adb.goods 
VALUES
  (1, 50, 1, 'Book', '2024-08-07 09:56:53'),
  (2, 80, 2, 'Basketball', '2024-08-08 10:00:55'),
  (3, 150, 3, 'Watch', '2024-08-06 11:00:25'),
  (4, 30, 1, 'Magazine', '2024-08-08 12:25:55'),
  (5, 80, 2, 'Football', '2024-08-07 08:50:35'),
  (6, 25, 4, 'Tea', '2024-08-05 09:25:30'),
  (7, 30, 4, 'Coffee', '2024-08-07 10:20:40'),
  (8, 300, 3, 'Computer', '2024-08-06 10:55:35'),
  (9, 100, 2, 'Baseball', '2024-08-08 11:35:50'),
  (10, 200, 3, 'Phone', '2024-08-07 11:30:25');

手順

Enterprise Edition、Basic Edition、および Data Lakehouse Edition

  1. SQL エディターに移動します。

    1. AnalyticDB for MySQL コンソールにログインします。コンソールの左上隅でリージョンを選択します。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。管理するクラスターを見つけて、クラスター ID をクリックします。

    2. 左側のナビゲーションウィンドウで、[ジョブ開発] > Sql開発 をクリックします。

  2. XIHE エンジンとインタラクティブなリソースグループを選択します。

  3. 次の文を実行して外部データベースを作成します。次のコードは例です:

    CREATE EXTERNAL DATABASE adb_external_db;
  4. 次の文を実行して外部テーブルを作成します。次のコードは例です:

    説明
    • AnalyticDB for MySQL の外部テーブルは、RDS for MySQL のソーステーブルと同じ列名、列数、列の順序、およびデータの型を持つ必要があります。

    • AnalyticDB for MySQL で外部テーブルを作成するためのパラメーターの詳細については、「CREATE EXTERNAL TABLE」をご参照ください。

    CREATE EXTERNAL TABLE IF NOT EXISTS  adb_external_db.goods (
        goods_id bigint(20) NOT NULL,
        price double NOT NULL,
        class bigint(20) NOT NULL,
        name varchar(32) NOT NULL,
        update_time timestamp,
        PRIMARY KEY (goods_id)
     )ENGINE = 'MYSQL' TABLE_PROPERTIES = '{
       "url":"jdbc:mysql://mysql-address:3306/test_adb",
       "tablename":"goods",
       "username":"mysql-user-name",
       "password":"mysql-user-password",
       "charset":"utf8"
    }';
  5. データをクエリします。

    外部テーブルが作成された後、AnalyticDB for MySQL で SELECT 文を実行して、RDS for MySQL の goods テーブルのデータをクエリできます。

    SELECT * FROM adb_external_db.goods;

    次の結果が返されます。

    +----------+-------+-------+------------+---------------------+
    | goods_id | price | class | name       | update_time         |
    +----------+-------+-------+------------+---------------------+
    |        2 |  80.0 |     2 | Basketball | 2024-08-08 10:00:55 |
    |       10 | 200.0 |     3 | Phone      | 2024-08-07 11:30:25 |
    |        1 |  50.0 |     1 | Book       | 2024-08-07 09:56:53 |
    |        6 |  25.0 |     4 | Tea        | 2024-08-05 09:25:30 |
    |        9 | 100.0 |     2 | Baseball   | 2024-08-08 11:35:50 |
    |        3 | 150.0 |     3 | Watch      | 2024-08-06 11:00:25 |
    |        5 |  80.0 |     2 | Football   | 2024-08-07 08:50:35 |
    |        7 |  30.0 |     4 | Coffee     | 2024-08-07 10:20:40 |
    |        8 | 300.0 |     3 | Computer   | 2024-08-06 10:55:35 |
    |        4 |  30.0 |     1 | Magazine   | 2024-08-08 12:25:55 |
    +----------+-------+-------+------------+---------------------+
  6. 次の文を実行して、ターゲットデータベースを作成します。

    CREATE DATABASE adb_demo;
  7. adb_demo データベースに mysql_import_test という名前のターゲットテーブルを作成するには、次の文を実行します。このテーブルは、RDS for MySQL からインポートされたデータを格納するために使用されます。

    CREATE TABLE IF NOT EXISTS  mysql_import_test (
            goods_id bigint(20) NOT NULL,
            price double NOT NULL,
            class bigint(20) NOT NULL,
            name varchar(32) NOT NULL,
            update_time timestamp,
            PRIMARY KEY (goods_id)
     )
    DISTRIBUTED BY HASH(goods_id);
  8. 次の文を実行して、RDS for MySQL インスタンスからターゲットの AnalyticDB for MySQL クラスターにデータをインポートします。

    INSERT INTO mysql_import_test
    SELECT * FROM adb_external_db.goods;
  9. 次の文を実行して、AnalyticDB for MySQLmysql_import_test テーブルのデータをクエリします。

    SELECT * FROM mysql_import_test;

    次の結果が返されます。

    +----------+-------+-------+------------+---------------------+
    | goods_id | price | class | name       | update_time         |
    +----------+-------+-------+------------+---------------------+
    |        2 |  80.0 |     2 | Basketball | 2024-08-08 10:00:55 |
    |       10 | 200.0 |     3 | Phone      | 2024-08-07 11:30:25 |
    |        1 |  50.0 |     1 | Book       | 2024-08-07 09:56:53 |
    |        6 |  25.0 |     4 | Tea        | 2024-08-05 09:25:30 |
    |        9 | 100.0 |     2 | Baseball   | 2024-08-08 11:35:50 |
    |        3 | 150.0 |     3 | Watch      | 2024-08-06 11:00:25 |
    |        5 |  80.0 |     2 | Football   | 2024-08-07 08:50:35 |
    |        7 |  30.0 |     4 | Coffee     | 2024-08-07 10:20:40 |
    |        8 | 300.0 |     3 | Computer   | 2024-08-06 10:55:35 |
    |        4 |  30.0 |     1 | Magazine   | 2024-08-08 12:25:55 |
    +----------+-------+-------+------------+---------------------+

Data Warehouse Edition

  1. ターゲットの AnalyticDB for MySQL クラスターに接続します。詳細については、「クラスターへの接続」をご参照ください。

  2. ターゲットデータベースを作成します。詳細については、「データベースの作成」をご参照ください。

    この例では、AnalyticDB for MySQL クラスターのターゲットデータベースの名前は adb_demo です。

  3. 外部テーブルを作成します。

    次の文を実行して、ターゲットデータベース adb_demogoods_external_table という名前の外部テーブルを作成します。

    CREATE TABLE IF NOT EXISTS goods_external_table (
            goods_id bigint(20) NOT NULL,
            price double NOT NULL,
            class bigint(20) NOT NULL,
            name varchar(32) NOT NULL,
            update_time timestamp,
            PRIMARY KEY (goods_id)
     )
            ENGINE='mysql'  
            TABLE_PROPERTIES='{  
            "url":"jdbc:mysql://mysql-vpc-address:3306/test_adb",  
            "tablename":"goods",  
            "username":"mysql-user-name",  
            "password":"mysql-user-password",
            "charset":"utf8"
      }';

    パラメーター

    説明

    ENGINE='mysql'

    外部テーブルのストレージエンジン。この Topic では MySQL を使用します。

    TABLE_PROPERTIES

    AnalyticDB for MySQL は、このメソッドを使用して RDS for MySQL のデータにアクセスします。

    url

    RDS for MySQL インスタンスの内部エンドポイント (VPC エンドポイント) とソースデータベースの名前。この例では、ソースデータベースは test_adb です。RDS for MySQL インスタンスのエンドポイントを表示する方法の詳細については、「内部およびパブリックエンドポイントとポートの表示または変更」をご参照ください。

    フォーマット: "jdbc:mysql://mysql-vpc-address:3306/rds-database-name"

    例: jdbc:mysql://rm-bp1hem632****.mysql.rds.aliyuncs.com:3306/test_adb

    tablename

    RDS for MySQL のソーステーブルの名前。この例では、ソーステーブルは goods です。

    username

    RDS for MySQL インスタンスのデータベースアカウント。

    password

    RDS for MySQL データベースアカウントのパスワード。

    charset

    MySQL の文字セット。有効な値:

    • gbk

    • utf8 (デフォルト)

    • utf8mb4

  4. ターゲットテーブルを作成します。

    adb_demo ターゲットデータベースで、次の文を実行して mysql_import_test という名前のテーブルを作成します。このテーブルは、RDS for MySQL からインポートされたデータを格納するために使用されます。

    CREATE TABLE IF NOT EXISTS  mysql_import_test (
            goods_id bigint(20) NOT NULL,
            price double NOT NULL,
            class bigint(20) NOT NULL,
            name varchar(32) NOT NULL,
            update_time timestamp,
            PRIMARY KEY (goods_id)
     )
    DISTRIBUTED BY HASH(goods_id);
  5. ソースの RDS for MySQL インスタンスから AnalyticDB for MySQL クラスターにデータをインポートします。

    REPLACE INTO mysql_import_test
    SELECT * FROM goods_external_table;
  6. インポートが完了したら、AnalyticDB for MySQL のターゲットデータベース adb_demo にログインし、次のコマンドを実行して、ソーステーブルのデータが mysql_import_test テーブルにインポートされたことを確認できます:

    SELECT * FROM mysql_import_test LIMIT 100;

    このコマンドは次の出力を返します:

    +----------+-------+-------+------------+---------------------+
    | goods_id | price | class | name       | update_time         |
    +----------+-------+-------+------------+---------------------+
    |        2 |  80.0 |     2 | Basketball | 2024-08-08 10:00:55 |
    |       10 | 200.0 |     3 | Phone      | 2024-08-07 11:30:25 |
    |        1 |  50.0 |     1 | Book       | 2024-08-07 09:56:53 |
    |        6 |  25.0 |     4 | Tea        | 2024-08-05 09:25:30 |
    |        9 | 100.0 |     2 | Baseball   | 2024-08-08 11:35:50 |
    |        3 | 150.0 |     3 | Watch      | 2024-08-06 11:00:25 |
    |        5 |  80.0 |     2 | Football   | 2024-08-07 08:50:35 |
    |        7 |  30.0 |     4 | Coffee     | 2024-08-07 10:20:40 |
    |        8 | 300.0 |     3 | Computer   | 2024-08-06 10:55:35 |
    |        4 |  30.0 |     1 | Magazine   | 2024-08-08 12:25:55 |
    +----------+-------+-------+------------+---------------------+