All Products
Search
Document Center

AnalyticDB:Impor data RDS MySQL menggunakan tabel eksternal

Last Updated:Aug 25, 2026

Anda dapat mengimpor data dari RDS for MySQL ke AnalyticDB for MySQL. Hal ini memungkinkan Anda mengintegrasikan data dari berbagai sumber dan menjalankan kueri analitik kompleks di AnalyticDB for MySQL. Anda juga dapat menulis ulang metrik utama yang telah diagregasi ke RDS for MySQL.

Prasyarat

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

  • Anda telah menambahkan AnalyticDB for MySQL dan RDS for MySQL ke daftar putih alamat IP instans RDS for MySQL.

  • Jika kluster AnalyticDB for MySQL Anda adalah Edisi Perusahaan, Edisi Dasar, Edisi Data Lakehouse, atau Edisi Gudang Data dalam mode elastis, aktifkan sakelar ENI pada bagian Network Information di halaman Cluster Information di AnalyticDB for MySQL.

    Penting

    Mengaktifkan atau menonaktifkan antarmuka jaringan elastis (ENI) akan mengganggu konektivitas database selama kurang lebih 2 menit, sehingga operasi baca dan tulis tidak tersedia selama periode tersebut. Evaluasi dampak potensial sebelum melakukan tindakan ini.

Persiapkan data

Contoh dalam topik ini menggunakan database RDS for MySQL bernama test_adb. Di database ini, dibuat tabel bernama goods. Kode berikut merupakan contohnya:

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

Masukkan data ke dalam tabel goods. Kode berikut merupakan contohnya:

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 Lakehouse

  1. Buka editor SQL.

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

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

  2. Pilih mesin XIHE dan kelompok resource interaktif.

  3. Jalankan pernyataan berikut untuk membuat database eksternal. Kode berikut merupakan contohnya:

    CREATE EXTERNAL DATABASE adb_external_db;
  4. Jalankan pernyataan berikut untuk membuat tabel eksternal. Kode berikut merupakan contohnya:

    Catatan
    • Kolom di AnalyticDB for MySQL harus sesuai dengan nama kolom, jumlah, urutan, dan tipe data tabel sumber di RDS for MySQL.

    • Untuk informasi selengkapnya mengenai parameter pembuatan tabel eksternal 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 membuat tabel eksternal, Anda dapat menjalankan pernyataan SELECT di AnalyticDB for MySQL untuk mengkueri data dari 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. Jalankan pernyataan berikut untuk membuat database tujuan:

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

    INSERT INTO mysql_import_test
    SELECT * FROM adb_external_db.goods;
  9. Jalankan pernyataan berikut untuk mengkueri data dari 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. Hubungkan ke kluster AnalyticDB for MySQL tujuan. Untuk langkah-langkah detailnya, lihat Hubungkan ke kluster.

  2. Buat database tujuan. Untuk langkah-langkah detailnya, lihat Buat database.

    Contoh ini menggunakan database tujuan bernama adb_demo di kluster AnalyticDB for MySQL.

  3. Buat tabel eksternal.

    Jalankan 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'

    Menentukan MySQL sebagai mesin penyimpanan untuk tabel eksternal.

    TABLE_PROPERTIES

    Menentukan cara AnalyticDB for MySQL mengakses data di RDS for MySQL.

    url

    URL koneksi JDBC untuk instans RDS for MySQL sumber. URL harus berisi Titik akhir RDS for MySQL instans dan nama database sumber. Dalam contoh ini, database sumber adalah test_adb. Untuk informasi cara melihat Titik akhir RDS for MySQL, lihat Lihat atau ubah 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, nama tabelnya adalah goods.

    username

    Username akun database RDS for MySQL.

    password

    Password akun database RDS for MySQL.

    charset

    Set karakter MySQL. Nilai yang valid:

    • gbk

    • UTF8 (default)

    • utf8mb4

  4. Buat tabel tujuan.

    Jalankan pernyataan berikut untuk membuat tabel tujuan bernama mysql_import_test di database tujuan adb_demo. Tabel ini 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 RDS for MySQL sumber ke kluster AnalyticDB for MySQL tujuan.

    REPLACE INTO mysql_import_test
    SELECT * FROM goods_external_table;
  6. Setelah impor selesai, login ke database adb_demo di AnalyticDB for MySQL dan jalankan pernyataan berikut untuk memverifikasi bahwa data sumber berhasil diimpor ke tabel mysql_import_test:

    SELECT * FROM mysql_import_test LIMIT 100;

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