全部产品
Search
文档中心

AnalyticDB:Gunakan tabel eksternal untuk mengimpor data dari RDS for MySQL

更新时间:Oct 21, 2025

Anda dapat mengimpor data dari RDS for MySQL ke AnalyticDB for MySQL untuk mengintegrasikan data dari berbagai sumber dan melakukan analisis query kompleks di AnalyticDB for MySQL. Anda juga dapat menulis metrik kunci yang dirangkum kembali ke RDS for MySQL.

Prasyarat

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

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

  • Untuk kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, Edisi Data Lakehouse, atau Edisi Gudang Data (Mode Elastis), saklar Elastic Network Interface (ENI) Network diaktifkan di bagian Network Information pada halaman Cluster Information di 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 tersedia. Evaluasi dampaknya sebelum Anda mengaktifkan atau menonaktifkan jaringan ENI.

Persiapan data

Dalam contoh untuk topik ini, sebuah database RDS for MySQL bernama test_adb berisi tabel bernama 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)
);

Contoh berikut menyisipkan data ke dalam tabel 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');

Prosedur

Edisi Perusahaan, Edisi Dasar, dan Edisi Data Lakehouse

  1. Buka editor SQL.

    1. Masuk ke Konsol AnalyticDB for MySQL. Di pojok kiri atas konsol, pilih wilayah. Di panel navigasi di sebelah kiri, klik Clusters. Temukan kluster yang ingin Anda kelola dan klik ID kluster tersebut.

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

  2. Pilih mesin XIHE dan kelompok sumber daya interaktif.

  3. Eksekusi pernyataan berikut untuk membuat database eksternal. Kode berikut memberikan contoh:

    CREATE EXTERNAL DATABASE adb_external_db;
  4. Eksekusi pernyataan berikut untuk membuat tabel eksternal. Kode berikut memberikan contoh:

    Catatan
    • Tabel eksternal di AnalyticDB for MySQL harus memiliki nama kolom, jumlah kolom, urutan kolom, dan tipe data yang sama dengan tabel sumber di RDS for MySQL.

    • Untuk informasi lebih lanjut tentang parameter untuk membuat tabel eksternal di AnalyticDB for MySQL, lihat 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. Kueri data.

    Setelah tabel eksternal dibuat, Anda dapat mengeksekusi pernyataan SELECT di AnalyticDB for MySQL untuk menanyakan data di tabel goods di RDS for MySQL.

    SELECT * FROM adb_external_db.goods;

    Hasil berikut dikembalikan:

    +----------+-------+-------+------------+---------------------+
    | 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. Eksekusi pernyataan berikut untuk membuat database tujuan.

    CREATE DATABASE adb_demo;
  7. Eksekusi pernyataan berikut untuk membuat tabel tujuan bernama mysql_import_test di database adb_demo. Tabel ini digunakan untuk menyimpan data yang diimpor dari 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. Eksekusi pernyataan berikut untuk mengimpor data dari instans RDS for MySQL ke kluster tujuan AnalyticDB for MySQL.

    INSERT INTO mysql_import_test
    SELECT * FROM adb_external_db.goods;
  9. Eksekusi pernyataan berikut untuk menanyakan data di tabel mysql_import_test di AnalyticDB for MySQL.

    SELECT * FROM mysql_import_test;

    Hasil berikut dikembalikan:

    +----------+-------+-------+------------+---------------------+
    | 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 |
    +----------+-------+-------+------------+---------------------+

Edisi Gudang Data

  1. Sambungkan ke kluster tujuan AnalyticDB for MySQL. Untuk informasi lebih lanjut, lihat Sambungkan ke kluster.

  2. Buat database tujuan. Untuk informasi lebih lanjut, lihat Buat database.

    Dalam contoh ini, database tujuan di kluster AnalyticDB for MySQL diberi nama adb_demo.

  3. Buat tabel eksternal.

    Eksekusi pernyataan berikut untuk membuat tabel eksternal bernama goods_external_table di database tujuan adb_demo.

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

    Parameter

    Deskripsi

    ENGINE='mysql'

    Mesin penyimpanan untuk tabel eksternal. Topik ini menggunakan MySQL.

    TABLE_PROPERTIES

    AnalyticDB for MySQL menggunakan metode ini untuk mengakses data di RDS for MySQL.

    url

    Titik akhir internal (VPC endpoint) dari instans RDS for MySQL dan nama database sumber. Dalam contoh ini, database sumber adalah test_adb. Untuk informasi lebih lanjut tentang cara melihat titik akhir instans RDS for MySQL, lihat Lihat atau modifikasi titik akhir internal dan publik serta port.

    Format: "jdbc:mysql://mysql-vpc-address:3306/rds-database-name".

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

    tablename

    Nama tabel sumber di RDS for MySQL. Dalam contoh ini, tabel sumber adalah goods.

    username

    Akun database untuk instans RDS for MySQL.

    password

    Kata sandi untuk akun database RDS for MySQL.

    charset

    Set karakter untuk MySQL. Nilai yang valid:

    • gbk

    • utf8 (default)

    • utf8mb4

  4. Buat tabel tujuan.

    Di dalam database tujuan adb_demo, eksekusi pernyataan berikut untuk membuat tabel bernama mysql_import_test. Tabel ini digunakan untuk menyimpan data yang diimpor dari 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. Impor data dari instans sumber RDS for MySQL ke kluster AnalyticDB for MySQL.

    REPLACE INTO mysql_import_test
    SELECT * FROM goods_external_table;
  6. Setelah impor selesai, Anda dapat masuk ke database tujuan AnalyticDB for MySQL adb_demo dan mengeksekusi perintah berikut untuk memverifikasi bahwa data dari tabel sumber telah diimpor ke tabel mysql_import_test:

    SELECT * FROM mysql_import_test LIMIT 100;

    Perintah tersebut mengembalikan keluaran berikut:

    +----------+-------+-------+------------+---------------------+
    | 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 |
    +----------+-------+-------+------------+---------------------+