AnalyticDB for MySQLでは、外部テーブルを使用してデータをインポートおよびエクスポートできます。 このトピックでは、外部テーブルを使用してApsaraDB RDS for MySQLからAnalyticDB for MySQLにデータをインポートする方法について説明します。
前提条件
ApsaraDB RDS for MySQLインスタンスとAnalyticDB for MySQLクラスターは同じ仮想プライベートクラウド (VPC) にデプロイされています。つまり、インスタンスのVPC IDはクラスターのものと同じです。
説明インスタンスのVPC IDを取得するには、ApsaraDB RDSコンソールにログインし、インスタンスIDをクリックします。 [データベース接続] ページで、[ネットワークタイプ] フィールドにVPC IDを表示できます。
クラスターのVPC IDを取得するには、AnalyticDB for MySQLコンソールにログインし、Data Warehouse Edition (V3.0) タブに移動して、クラスターIDをクリックします。 クラスター情報 ページの ネットワーク情報 セクションで、AnalyticDB for MySQLクラスターのVPC IDを表示できます。
AnalyticDB for MySQLクラスターのVPC CIDRブロックが、ApsaraDB RDS for MySQLインスタンスのIPアドレスホワイトリストに追加されます。 詳細については、「データベースクライアントまたはCLIを使用したApsaraDB RDS For MySQLインスタンスへの接続」をご参照ください。
ApsaraDB RDS for MySQLインスタンスにデータベースが作成され、データベースにログインしています。 テストデータを準備する。 詳細については、「アカウントとデータベースの作成」および「クライアントまたはCLIを使用したApsaraDB RDS For MySQLインスタンスへの接続」をご参照ください。
この例では、ApsaraDB RDS for MySQLインスタンスのソースデータベースとして
test_adb
という名前のデータベースが使用されています。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クラスターがApsaraDB RDS for MySQLインスタンスのデータにアクセスするために使用する接続情報。
url
ApsaraDB RDS for MySQLインスタンスのソースデータベースへの接続に使用されるVPCエンドポイント。 この例では、
test_adb
データベースが使用されます。 ApsaraDB RDS For MySQLインスタンスのエンドポイントを表示する方法については、「インスタンスエンドポイントとポートの表示と管理」をご参照ください。形式:
"jdbc:mysql:// mysql-vpc-address:3306/rds-database-name"
例:
jdbc:mysql:// rm-bp1hem632 **** .mysql.rds.aliyuncs.com:3306/test_adb
tablename
ApsaraDB RDS for MySQLインスタンスのソーステーブルの名前。 この例では、
goods
が使用されます。ユーザー名
ApsaraDB RDS for MySQLインスタンスのソースデータベースへの接続に使用されるアカウントの名前。
パスワード
データベースアカウントのパスワードを設定します。
charset
ApsaraDB RDS for MySQLインスタンスのソースデータベースで使用される文字セット。 有効な値:
gbk
utf8 (デフォルト)
utf8mb4
宛先テーブルを作成します。
次のステートメントを実行して、
adb_demo
データベースにmysql_import_test
という名前のターゲットテーブルを作成します。 ターゲットテーブルは、ApsaraDB RDS for 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);
からデータをインポートするApsaraDB RDS for 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;