AnalyticDB for MySQLでは、外部テーブルを使用してデータをインポートおよびエクスポートできます。 このトピックでは、AnalyticDB for MySQLの外部テーブルを使用して、Elastic Compute Service (ECS) インスタンスでホストされているセルフマネージドMySQLデータベースからAnalyticDB for MySQL data Warehouse Edition (V3.0) クラスターにデータをインポートする方法について説明します。
前提条件
Elastic Compute Service (ECS) インスタンスは、AnalyticDB for MySQLクラスターと同じリージョン内の同じ仮想プライベートクラウド (VPC) に作成されます。
自己管理型MySQLデータベースはECSインスタンスでホストされています。
自己管理型MySQLデータベースが接続されているポート番号には、ECSインスタンスへのアクセスが許可されています。 詳細については、「セキュリティグループルールの追加」をご参照ください。
ソーステーブルが自己管理MySQLデータベースに作成されます。 テストデータを準備する。
この例では、ECSインスタンスでホストされている
test_adb
自己管理型MySQLデータベースがソースデータベースとして使用されます。goods
という名前のソーステーブルがデータベースに作成されます。 次のステートメントを使用して、ソーステーブルを作成します。テーブルグッズを作成 ( good_id bigint(20) NOT NULL、価格ダブルNOT NULL、クラスbigint (20) NOT NULL, 名前varchar(32) NOT NULL, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP、PRIMARYキー (goods_id) );
AnalyticDB for MySQLクラスターがエラスティックモードの場合、クラスター情報 ページの ネットワーク情報 セクションでEniネットワークをオンにする必要があります。
手順
AnalyticDB for MySQLクラスターに接続します。 詳細については、「AnalyticDB For MySQLクラスターへの接続」をご参照ください。
データベースを作成します。 詳細については、「データベースの作成」をご参照ください。
この例では、
adb_demo
という名前のデータベースがAnalyticDB for MySQLクラスターに作成されます。外部テーブルを作成します。
次のステートメントを実行して、
goods_external_tableが存在しない場合はadb_demo
データベースにgoods_external_table
という名前の外部テーブルを作成します。CREATE TABLE (goods_external_table) ( good_id bigint(20) NOT NULL、 価格ダブルNOT NULL、 クラスbigint (20) NOT NULL, 名前varchar(32) NOT NULL, update_timeタイムスタンプ、 PRIMARYキー (goods_id) ) エンジン='mysql' TABLE_PROPERTIES='{ "url":"jdbc:mysql:// mysql-vpc-address:3306/test_adb" 、 "tablename":"goods" 、 "username":"mysql-user-name" 、 "password":"mysql-user-password" 、 "charset":"utf8" }';
パラメーター
説明
エンジン='mysql'
外部テーブルに使用されるストレージエンジン。 この例では、MySQLが使用されています。
テーブル_プロパティ
AnalyticDB for MySQLクラスターがECSインスタンスでホストされている自己管理型MySQLデータベースのデータにアクセスするために使用する接続情報。
url
ECSインスタンスのソースデータベースへの接続に使用されるプライマリプライベートIPアドレスまたはVirtual private Cloud (VPC) エンドポイント。 この例では、
test_adb
データベースが使用されます。 プライマリプライベートIPアドレスを表示するには、次の手順を実行します。ECSコンソールにログインし、ECSインスタンスを見つけます。
[インスタンスの詳細] タブの [ネットワーク情報] セクションで、ECSインスタンスの [プライマリプライベートIPアドレス] の値を表示します。
形式:
"jdbc:mysql:// mysql-vpc-address:3306/ecs-database-name"
例:
jdbc:mysql:// 192.168.128 ***:3306/test_adb
tablename
ECSインスタンスでホストされている自己管理型MySQLデータベースのソーステーブルの名前。 この例では、
goods
が使用されます。ユーザー名
ECSインスタンスでホストされている自己管理型MySQLデータベースへの接続に使用されるデータベースアカウントの名前。
パスワード
データベースアカウントのパスワードを設定します。
charset
ApsaraDB RDS for MySQLインスタンスのソースデータベースで使用される文字セット。 デフォルト値: utf8。 有効な値:
gbk
utf8
utf8mb4
宛先テーブルを作成します。
次のステートメントを実行して、
adb_demo
データベースにmysql_import_test
という名前のターゲットテーブルを作成します。 宛先テーブルは、ECSインスタンスでホストされている自己管理型MySQLデータベースからインポートされたデータを格納するために使用されます。が存在しない場合はテーブルを作成してくださいmysql_import_test ( good_id bigint(20) NOT NULL、 価格ダブルNOT NULL、 クラスbigint (20) NOT NULL, 名前varchar(32) NOT NULL, update_timeタイムスタンプ、 PRIMARYキー (goods_id) ) ハッシュによって分配される (goods_id);
ECSインスタンスでホストされている自己管理型MySQLデータベースからAnalyticDB for MySQLクラスターにデータをインポートします。
mysql_import_testへの交換 SELECT * からgoods_external_table;
次のステップ
データのインポート後、AnalyticDB for MySQLクラスターのadb_demo
データベースに接続できます。 次に、次のステートメントを実行して、データがソーステーブルからmysql_import_test
テーブルにインポートされているかどうかを確認します。
SELECT * FROM mysql_import_test LIMIT 100;