通過外表導入至湖倉版
您可以將RDS MySQL的數據導入云原生數據倉庫 AnalyticDB 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);
操作步驟
進入SQL開發編輯器。
登錄云原生數據倉庫AnalyticDB MySQL控制臺,在左上角選擇集群所在地域。在左側導航欄,單擊集群列表,在企業版、基礎版或湖倉版頁簽下,單擊目標集群ID。
在左側導航欄,單擊 。
引擎選擇Xihe,資源組選擇Interactive型資源組。
執行以下語句,創建外部數據庫。示例如下:
CREATE EXTERNAL DATABASE adb_external_db;
執行以下語句,創建外表。示例如下:
說明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" }';
查詢數據。
外表創建成功后,您可以在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)
將數據寫入RDS MySQL。
INSERT INTO adb_external_db.person SELECT 5, 'lily', 20;
執行以下語句,創建目標數據庫。
CREATE DATABASE adb_demo;
執行以下語句,在目標數據庫
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);
執行以下語句,將RDS MySQL實例中的數據導入至目標AnalyticDB for MySQL集群中。
INSERT INTO mysql_import_test SELECT * FROM adb_external_db.person;
執行以下語句,查詢AnalyticDB for MySQL表
mysql_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)