すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:外部テーブルを使用してデータをdata Warehouse Editionにインポートする

最終更新日:Jun 11, 2024

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ネットワークをオンにする必要があります。启用ENI网络

手順

  1. AnalyticDB for MySQLクラスターに接続します。 詳細については、「AnalyticDB For MySQLクラスターへの接続」をご参照ください。

  2. データベースを作成します。 詳細については、「データベースの作成」をご参照ください。

    この例では、adb_demoという名前のデータベースがAnalyticDB for MySQLクラスターに作成されます。

  3. 外部テーブルを作成します。

    次のステートメントを実行して、adb_demoデータベースにgoods_external_tableという名前の外部テーブルを作成します。

    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

  4. 宛先テーブルを作成します。

    次のステートメントを実行して、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); 
  5. からデータをインポートする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;