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

AnalyticDB:Tablestore データのクエリとインポート

最終更新日:Apr 08, 2026

AnalyticDB for MySQL を使用すると、外部テーブルを介して Tablestore データを直接クエリしたり、内部テーブルにインポートして繰り返し分析したりできます。アドホックアクセスの場合は直接クエリを使用します。パフォーマンスが重視される分析や繰り返し行われる分析の場合は、インポートを使用します。内部テーブルのクエリは、外部テーブルのクエリよりも高速です。

前提条件

開始する前に、以下を確認してください。

  • AnalyticDB for MySQL の Enterprise Edition、Basic Edition、または Data Lakehouse Edition のクラスターがあること。

  • ご利用の Tablestore インスタンスが VPC (Virtual Private Cloud) にバインドされている場合、AnalyticDB for MySQL クラスターは同じ VPC 内にある必要があります。

背景情報

Tablestore インスタンスは、Tablestore 内のテーブルとデータを管理するもので、データベースに相当します。各 Tablestore インスタンスは、AnalyticDB for MySQL のスキーマまたはデータベースにマッピングされます。

ネットワークアクセス:VPC が Tablestore インスタンスにバインドされていない場合、AnalyticDB for MySQL はデータに直接アクセスできます。VPC がバインドされている場合、AnalyticDB for MySQL クラスターは同じ VPC 内にある必要があります。

サンプルデータ

このトピックの例では、person という名前の Tablestore テーブルと次のデータを使用します。すでにソースデータがある場合は、このセクションをスキップしてください。

id (プライマリキー)

name

age

1

james

10

2

bond

20

3

jack

30

4

lucy

40

SQL エディターの起動

  1. AnalyticDB for MySQL コンソールにログインします。左上の隅でリージョンを選択します。左側のナビゲーションウィンドウで、クラスター をクリックします。対象のクラスターを見つけて、そのクラスター ID をクリックします。

  2. 左側のナビゲーションウィンドウで、ジョブ開発 > SQL 開発 を選択します。

Tablestore データのクエリ

ステップ 1:外部データベースの作成

CREATE EXTERNAL DATABASE adb_external_db;

ステップ 2:外部テーブルの作成

外部テーブルは、フィールド名、数、順序が Tablestore テーブルと一致している必要があります。また、フィールドのデータ型にも互換性が必要です。データ型のマッピングについては、「データ型マッピング」をご参照ください。

次の例では、adb_external_db データベースに person という名前のテーブルを作成します。

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_db.person (
    id    int,
    name  string,
    age   int
)
ENGINE = 'OTS'
TABLE_PROPERTIES = '{
    "mapped_name": "person",
    "location": "https://w0****la.cn-hangzhou.vpc.tablestore.aliyuncs.com"
}';

パラメーター

説明

ENGINE='OTS'

Tablestore データの読み書きを行うためのストレージエンジンです。常に OTS に設定してください。

mapped_name

Tablestore インスタンス内のテーブル名です。テーブル名を確認するには、Tablestore コンソールに移動し、すべてのインスタンス ページを開きます。

location

Tablestore インスタンスの VPC URL です。URL を確認するには、Tablestore コンソールに移動し、すべてのインスタンス ページを開きます。

ステップ 3:データのクエリ

外部テーブルが作成されると、AnalyticDB for MySQL は Tablestore テーブルからデータを自動的にマッピングします。次の SELECT 文を実行して、データをクエリします。

SELECT * FROM adb_external_db.person;

期待される出力:

+------+-------+------+
| id   | name  | age  |
+------+-------+------+
|    1 | james |   10 |
|    2 | bond  |   20 |
|    3 | jack  |   30 |
|    4 | lucy  |   40 |
+------+-------+------+
4 rows in set (0.35 sec)

Tablestore データを AnalyticDB for MySQL にインポート

Tablestore から AnalyticDB for MySQL の内部テーブルにデータをインポートすると、繰り返しクエリを高速化できます。3 つの書き込みメソッドが利用可能です。重複排除とパフォーマンスの要件に基づいて選択してください。

ステップ 1:データベースの作成

CREATE DATABASE adb_demo;

ステップ 2:宛先テーブルの作成

宛先テーブルは、外部テーブルと同じフィールド数と順序を持つ必要があります。フィールドのデータ型には互換性が必要です。

CREATE TABLE IF NOT EXISTS adb_demo.adb_import_test (
    id   int,
    name string,
    age  int
)
DISTRIBUTED BY HASH(id);

ステップ 3:データの書き込み

重複するプライマリキーをどのように処理するかに基づいて、書き込みメソッドを選択します。

メソッド

重複の処理

構文

INSERT INTO

重複をスキップ (INSERT IGNORE INTO と同等)

INSERT INTO ... SELECT ...

INSERT OVERWRITE

重複を上書き

INSERT OVERWRITE ... SELECT ...

SUBMIT JOB

非同期の上書き

SUBMIT JOB INSERT OVERWRITE ... SELECT ...

メソッド 1:INSERT INTO (重複をスキップ)

重複するプライマリキーを持つ行がすでに存在する場合、その行はスキップされます。

INSERT INTO adb_demo.adb_import_test
SELECT * FROM adb_external_db.person;

結果を確認します。

SELECT * FROM adb_demo.adb_import_test;

期待される出力:

+------+-------+------+
| id   | name  | age  |
+------+-------+------+
|    1 | james |   10 |
|    2 | bond  |   20 |
|    3 | jack  |   30 |
|    4 | lucy  |   40 |
+------+-------+------+

メソッド 2:INSERT OVERWRITE (重複を置き換え)

重複するプライマリキーを持つ行がすでに存在する場合、既存の行は上書きされます。

INSERT OVERWRITE adb_demo.adb_import_test
SELECT * FROM adb_external_db.person;

メソッド 3:SUBMIT JOB (非同期インポート)

ほとんどの場合、SUBMIT JOB を使用してインポートを非同期で実行します。/*+ direct_batch_load=true*/ ヒントを追加して、ジョブを高速化できます。

SUBMIT JOB
INSERT OVERWRITE adb_demo.adb_import_test
SELECT * FROM adb_external_db.person;

この文はジョブ ID を返します。

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

非同期ジョブをモニターするには、「非同期でのインポートジョブの送信」をご参照ください。

データ型マッピング

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

Tablestore

AnalyticDB for MySQL

INTEGER (8 バイト)

BIGINT (8 バイト)

STRING

VARCHAR

BINARY

BINARY

DOUBLE

DOUBLE

BOOLEAN

BOOLEAN

次のステップ

  • INSERT INTO 文が重複をどのように処理するかについては、「INSERT INTO」をご参照ください。

  • 非同期インポートのオプションと INSERT OVERWRITE SELECT 構文については、「INSERT OVERWRITE SELECT」をご参照ください。