全部產品
Search
文件中心

AnalyticDB:通過外表匯入至湖倉版

更新時間:Oct 29, 2024

您可以將RDS MySQL的資料匯入AnalyticDB for MySQL,在資料倉儲中完成多來源資料整合和複雜查詢分析,也可以將經過匯總的關鍵計量寫入RDS MySQL。

前提條件

  • AnalyticDB for MySQL叢集的產品系列為湖倉版

  • RDS MySQL執行個體與AnalyticDB for MySQL叢集位於同一VPC。

  • 已在AnalyticDB for MySQL控制台叢集資訊頁面的網路資訊列啟用ENI網路開關。

  • 已將AnalyticDB for MySQL的VPC網段加入RDS MySQL執行個體的白名單中。詳細操作步驟,請參見設定IP白名單

樣本資料說明

本文樣本的RDS MySQL資料庫名為test_adb,並在該庫中建立了一張名為person的表,樣本如下:

CREATE TABLE IF NOT EXISTS test_adb.person(
id int,
name varchar(1023),
age int
);

person表中插入資料,樣本如下:

INSERT INTO test_adb.person values
(1, 'james', 10),
(2, 'bond', 20),
(3, 'jack', 30),
(4, 'lucy', 40);

操作步驟

  1. 進入SQL開發編輯器。

    1. 登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,在湖倉版頁簽下,單擊目的地組群ID。

    2. 在左側導覽列,單擊作業開發 > SQL開發

  2. 引擎選擇Xihe,資源群組選擇Interactive型資源群組。

  3. 執行以下語句,建立外部資料庫。樣本如下:

    CREATE EXTERNAL DATABASE adb_external_db;
  4. 執行以下語句,建立外表。樣本如下:

    說明
    • AnalyticDB for MySQL外表和RDS MySQL中表的列名稱、數量、順序、欄位類型需要相同。

    • AnalyticDB for MySQL外表的參數說明,請參見CREATE EXTERNAL TABLE

    CREATE EXTERNAL TABLE IF NOT EXISTS  adb_external_db.person (
        id int,
        name varchar(1023),
        age int
     )ENGINE = 'MYSQL' TABLE_PROPERTIES = '{
       "url":"jdbc:mysql://mysql-address:3306/test_adb",
       "tablename":"person",
       "username":"mysql-user-name",
       "password":"mysql-user-password",
       "charset":"utf8"
    }';
  5. 查詢資料。

    外表建立成功後,您可以在AnalyticDB for MySQL中通過SELECT查詢RDS MySQL中person表的資料。

    SELECT * FROM adb_external_db.person;

    返回結果如下:

    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    3 | jack  |   30 |
    |    4 | lucy  |   40 |
    +------+-------+------+
    4 rows in set (0.35 sec)
  6. 將資料寫入RDS MySQL。

    INSERT INTO adb_external_db.person SELECT 5, 'lily', 20;
  7. 執行以下語句,建立目標資料庫。

    CREATE DATABASE adb_demo;
  8. 執行以下語句,在目標資料庫adb_demo中建立一張名為mysql_import_test的目標表,用於儲存從RDS MySQL匯入的資料。

    CREATE TABLE IF NOT EXISTS  mysql_import_test (
        id int,
        name varchar(1023),
        age int,
       PRIMARY KEY (id)
     )
    DISTRIBUTED BY HASH(id);
  9. 執行以下語句,將RDS MySQL執行個體中的資料匯入至目標AnalyticDB for MySQL叢集中。

    INSERT INTO mysql_import_test
    SELECT * FROM adb_external_db.person;
  10. 執行以下語句,查詢AnalyticDB for MySQLmysql_import_test資料。

    SELECT * FROM mysql_import_test;

    返回結果如下:

    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    1 | james |   10 |
    |    2 | bond  |   20 |
    |    4 | lucy  |   40 |
    |    5 | lily  |   20 |
    |    3 | jack  |   30 |
    +------+-------+------+
    5 rows in set (0.37 sec)