AnalyticDB for MySQL は、外部テーブルを使用してデータのインポートおよびエクスポートを行います。このトピックでは、AnalyticDB for MySQL Data Warehouse Edition クラスターの外部テーブルを使用して、ApsaraDB RDS for MySQL インスタンスにデータをエクスポートする方法について説明します。
前提条件
-
ApsaraDB RDS for MySQL インスタンスと AnalyticDB for MySQL クラスターは、同じ VPC 内にあり、同じ VPC ID を持つ必要があります。
説明-
ApsaraDB RDS for MySQL インスタンスの VPC ID を確認するには、ApsaraDB RDS コンソールにログインしてインスタンス ID をクリックし、データベース接続 ページの ネットワークタイプ セクションで ID を確認します。
-
AnalyticDB for MySQL コンソールにログインします。データウェアハウス版タブで、クラスター ID をクリックします。クラスター情報 ページの ネットワーク情報 セクションで、AnalyticDB for MySQL クラスターの VPC ID を確認します。
-
-
ApsaraDB RDS for MySQL インスタンスにデータベースを作成し、インスタンスに接続して、必要なテストデータを準備します。詳細については、「アカウントとデータベースの作成」および「ApsaraDB RDS for MySQL インスタンスへの接続」をご参照ください。
この例では、ApsaraDB RDS for MySQL インスタンスのターゲットデータベースは
test_adbです。AnalyticDB for MySQL クラスターからエクスポートされたデータを格納するために、このデータベースにcoursesという名前のターゲットテーブルが必要です。次のステートメントを使用してテーブルを作成します。CREATE TABLE courses ( id bigint NOT NULL, name varchar(32) NOT NULL, grade varchar(32) NOT NULL, submission_date timestamp NOT NULL, PRIMARY KEY (id) ); AnalyticDB for MySQL クラスタがエラスティック モードの場合、クラスター情報 ページの ネットワーク情報 セクションで Eniネットワーク を有効にする必要があります。
重要ENI を有効または無効にすると、データベース接続が約 2 分間中断される場合があります。この間、読み取りまたは書き込み操作を実行することはできません。ENI を有効または無効にする場合は注意してください。
手順
AnalyticDB for MySQL クラスタに接続します。詳細については、「AnalyticDB for MySQL クラスタに接続する」をご参照ください。
-
ソースデータベースを作成します。詳細については、「データベースの作成」をご参照ください。
この例では、AnalyticDB for MySQL クラスターのソースデータベースは
adb_demoです。 -
ソーステーブルを作成し、データを挿入します。
次のステートメントを実行して、
adb_demoソースデータベースにcoursesという名前のソーステーブルを作成します。このテーブルのデータは、test_adbターゲットデータベースのcoursesテーブルにエクスポートされます。CREATE TABLE courses ( id bigint AUTO_INCREMENT, name varchar NOT NULL, grade varchar DEFAULT '1st Grade', submission_date timestamp ) DISTRIBUTED BY HASH(id);次のステートメントを実行して、ソーステーブル
coursesに 1 行のデータを挿入します。INSERT INTO courses (name,submission_date) VALUES("Jams",NOW()); -
外部テーブルを作成します。
次のステートメントを実行して、
adb_demoソースデータベースにcourses_external_tableという名前の外部テーブルを作成します。CREATE TABLE IF NOT EXISTS courses_external_table( id bigint NOT NULL, name varchar(32) NOT NULL, grade varchar(32) NOT NULL, submission_date timestamp NOT NULL, PRIMARY KEY (id) ) ENGINE='mysql' TABLE_PROPERTIES='{ "url":"jdbc:mysql://mysql-vpc-address:3306/test_adb", "tablename":"courses", "username":"mysql-user-name", "password":"mysql-user-password", "charset":"utf8" }';パラメーター
説明
ENGINE='mysql'外部テーブルのストレージエンジン。この例では MySQL を使用します。
TABLE_PROPERTIESAnalyticDB for MySQL が RDS MySQL データにアクセスするためのプロパティ。
urlApsaraDB RDS for MySQL インスタンスの VPC エンドポイントとターゲットデータベースの名前。この例では、ターゲットデータベースは
test_adbです。RDS インスタンスのエンドポイントを確認する方法については、「インスタンスエンドポイントとポートの表示と管理」をご参照ください。形式:
"jdbc:mysql://mysql-vpc-address:3306/rds-database-name"例:
jdbc:mysql://rm-bp1hem632****.mysql.rds.aliyuncs.com:3306/test_adbtablenameApsaraDB RDS for MySQL インスタンスのターゲットテーブルの名前。この例では
coursesを使用します。usernameターゲット ApsaraDB RDS for MySQL データベースのユーザー名。
password指定したユーザー名のパスワード。
charsetMySQL の文字セット。有効な値:
-
gbk
-
[Utf8] (デフォルト)
-
utf8mb4
-
-
ソース AnalyticDB for MySQL クラスターからターゲット ApsaraDB RDS for MySQL インスタンスにデータをエクスポートします。
次のステートメントを実行します。
REPLACE INTO courses_external_table SELECT * FROM courses;
次のステップ
エクスポートが完了したら、ApsaraDB RDS for MySQL インスタンスの test_adb ターゲットデータベースにログインし、次のステートメントを実行して、データがターゲット courses テーブルにエクスポートされたことを確認します。
SELECT * FROM courses LIMIT 100;