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

AnalyticDB:Tablestoreデータの照会とインポート

最終更新日:Jun 12, 2024

このトピックでは、AnalyticDB for MySQL data Lakehouse Edition (V3.0) でTablestoreデータをクエリおよびインポートする方法について説明します。

前提条件

  • AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターが作成されます。 詳細については、「クラスターの作成」をご参照ください。

    説明

    作成されたTablestoreインスタンスに仮想プライベートクラウド (VPC) がバインドされている場合は、AnalyticDB for MySQLクラスターが同じVPCに作成されていることを確認してください。

背景情報

Tablestoreインスタンスは、Tablestoreのテーブルとデータを管理するために使用されるエンティティです。 各インスタンスはデータベースに相当します。 Tablestoreインスタンスは、AnalyticDB for MySQLスキーマまたはデータベースに対応します。 TablestoreインスタンスにバインドされているVPCがない場合、AnalyticDB for MySQLからTablestoreデータに直接アクセスできます。 VPCがTablestoreインスタンスにバインドされている場合は、AnalyticDB for MySQLクラスターが同じVPCに作成されていることを確認します。

サンプルデータ

この例では、personという名前のテーブルがTablestoreに作成され、4つのエントリがテーブルに挿入されます。 ソースデータを作成した場合は、この手順をスキップします。

id (主キー)

name

年齢

1

ジェームズ

10

2

ボンド

20

3

ジャック

30

4

ルーシー

40

手順

  1. SQLエディターに移動します。
    1. AnalyticDB for MySQLコンソールにログインします。
    2. ページの左上隅で、クラスターが存在するリージョンを選択します。
    3. 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
    4. Lake Warehouse Edition(3.0) タブでクラスターを見つけ、クラスター ID をクリックします。
    5. 左側のナビゲーションウィンドウで、[ジョブ開発] > Sql開発 を選択します。
  2. 外部データベースを作成します。

    この例では、adb_external_dbという名前のデータベースが作成されます。 例:

    外部データベースadb_external_dbを作成します。
  3. 外部テーブルを作成します。

    説明

    AnalyticDB for MySQL外部テーブルは、Tablestoreテーブルと同じ名前、数量、およびフィールドの順序を持つ必要があります。 フィールドのデータ型は、2つのテーブル間で互換性がある必要があります。 データ型マッピングの詳細については、このトピックの「データ型マッピング」を参照してください。

    この例では、adb_external_dbデータベースにpersonという名前のテーブルが作成されます。 例:

    adb_external_db.personが存在しない場合は
    外部テーブルを作成します (
        id int,
        名前文字列,
        年齢int
    ) エンジン='OTS'
    TABLE_PROPERTIES = '{
    "mapped_name":"person" 、"location":"https:// w0 **** la.cn-hangzhou.vpc.tablestore.aliyuncs.com"
    } ' 

    パラメーター

    説明

    エンジン='OTS'

    外部テーブルのストレージエンジン。 Tablestoreデータを読み書きするには、ストレージエンジンをOTSに設定します。

    mapped_name

    Tablestoreインスタンスのテーブルの名前。 テーブル名を表示するには、Tablestoreコンソールにログインし、[すべてのインスタンス] ページに移動します。

    場所

    TablestoreインスタンスのVPC URL。 VPC URLを表示するには、Tablestoreコンソールにログインし、[すべてのインスタンス] ページに移動します。

  4. 外部テーブルが作成されると、AnalyticDB for MySQLはTablestoreテーブルのデータをAnalyticDB for MySQLテーブルに自動的にマップします。 AnalyticDB for MySQLで次のSELECTステートメントを実行して、Tablestoreインスタンスのpersonテーブルのデータを照会します。

    adb_external_db.personから * を選択します。

    次の情報が返されます。

    + ------ ------- --------
    | id | 名前 | 年齢 |
    + ----- + ------- + ------- +
    | 1 | ジェームズ | 10 |
    | 2 | ボンド | 20 |
    | 3 | ジャック | 30 |
    | 4 | ルーシー | 40 |
    + ----- + ------- + ------- +
    セットの4列 (0.35秒) 
  5. 次の手順を実行して、TablestoreからAnalyticDB for MySQLにデータをインポートします。

    1. でデータベースを作成します。AnalyticDB for MySQL.

      CREATE DATABASE adb_demo;
    2. AnalyticDB for MySQLにテーブルを作成し、Tablestoreからインポートしたデータを保存します。

      説明

      作成されたテーブルは、手順3で作成された外部テーブルと同じ数と順序のフィールドを使用する必要があります。 フィールドのデータ型は、2つのテーブル間で互換性がある必要があります。

      adb_demo.adb_import_testが存在しない場合は
      テーブルを作成します (
          id int,
          名前文字列,
          年齢int
      )
      ハッシュによる分配 (id); 
    3. テーブルにデータを書き込みます。

      • 方法1: INSERT INTOステートメントを実行してデータをインポートします。 主キーの値が重複している場合、データは繰り返し挿入されず、INSERT INTOステートメントはINSERT IGNORE INTOステートメントと同等です。 詳細については、「INSERT INTO」をご参照ください。

        adb_demo.adb_import_testに挿入する
        SELECT * からadb_external_db.person; 

        SELECTステートメントを実行して、テーブルに書き込まれたデータを照会します。

        adb_demo.adb_import_testから * を選択します。

        次の情報が返されます。

        + ------ ------- --------
        | id | 名前 | 年齢 |
        + ----- + ------- + ------- +
        | 1 | ジェームズ | 10 |
        | 2 | ボンド | 20 |
        | 3 | ジャック | 30 |
        | 4 | ルーシー | 40 |
        + ----- + ------- + ------- + 
      • 方法2: INSERT OVERWRITEステートメントを実行してデータをインポートします。 主キーの値が重複している場合、元の値は新しい値で上書きされます。

        INSERT OVERWRITE adb_demo.adb_import_test
        SELECT * からadb_external_db.person; 
      • 方法3: INSERT OVERWRITE INTOステートメントを非同期的に実行してデータをインポートします。 ほとんどの場合、ジョブ送信は非同期ジョブの送信に使用されます。 ジョブを高速化するために、データインポートステートメントの前にヒント (/* + direct_batch_load=true */) を追加できます。 詳細については、「INSERT OVERWRITE SELECT」トピックの「非同期書き込み」セクションをご参照ください。

        ジョブを送信
        INSERT OVERWRITE adb_demo.adb_import_test
        SELECT * からadb_external_db.person; 

        次の情報が返されます。

        + --------------------------------------- +
        | job_id |
        + --------------------------------------- +
        | 2020112122202917203100908203303 ****** | 

        非同期ジョブの送信方法については、「インポートジョブの非同期送信」をご参照ください。

データ型マッピング

次の表に、TablestoreとAnalyticDB for MySQLの間のデータ型マッピングを示します。

Tablestoreでサポートされるデータ型

AnalyticDB for MySQLでサポートされるデータ型

INTEGER (8バイト)

BIGINT (8バイト)

STRING

VARCHAR

BINARY

BINARY

DOUBLE

DOUBLE

BOOLEAN

BOOLEAN