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

Tablestore:マッピングテーブルの作成

最終更新日:Jul 31, 2026

Tablestore SDK for Java は、既存のデータテーブルまたは検索インデックスのマッピングテーブルを作成し、データへの SQL アクセスを有効にします。

前提条件

説明

sqlQuery メソッドを呼び出して CREATE TABLE ステートメントを実行し、既存のデータテーブルまたは検索インデックスのマッピングテーブルを作成します。

SQLQueryResponse sqlQuery(SQLQueryRequest request)

データテーブルの場合、マッピングテーブルはデータテーブルと同じ名前である必要があります。 フィールド名では大文字と小文字が区別されず、フィールドタイプはデータテーブルのフィールドタイプに対応している必要があります。 検索インデックスの場合、マッピングテーブル名をカスタマイズし、ENGINEENGINE_ATTRIBUTE を使用してデータテーブルと検索インデックスを指定できます。

CREATE TABLE ステートメントの構文、フィールドタイプ、パラメーターの詳細については、「DDL 操作」をご参照ください。

次の例では、文字列型のプライマリキー列と 4 つの属性列を含む example_table データテーブルのマッピングテーブルを作成します。

String query = "CREATE TABLE example_table ("
        + "pk VARCHAR(1024), "
        + "long_value BIGINT, "
        + "double_value DOUBLE, "
        + "string_value MEDIUMTEXT, "
        + "bool_value BOOL, "
        + "PRIMARY KEY(pk))";
SQLQueryRequest request = new SQLQueryRequest(query);

client.sqlQuery(request);

パラメーター

SQLQueryRequest には、次のパラメーターがあります。

名前

タイプ

説明

query (必須)

String

マッピングテーブル名、フィールド、プライマリキー、クエリエンジンを定義する CREATE TABLE ステートメント。 データテーブルのマッピングと検索インデックスのマッピングでは、異なる構文が使用されます。

シナリオ例

検索インデックスのマッピングテーブルの作成

検索インデックスのマッピングテーブルを作成するには、ENGINEsearchindex に設定し、ENGINE_ATTRIBUTE でデータテーブルと検索インデックスを指定します。 次の例では、example_search_table という名前のマッピングテーブルを、example_table データテーブルの example_index 検索インデックスに対して作成します。

String tableName = "example_table";
String indexName = "example_index";
String mappingTableName = "example_search_table";
String query = String.format(
        "CREATE TABLE %s (pk MEDIUMTEXT, long_value BIGINT, "
                + "double_value DOUBLE, string_value MEDIUMTEXT, "
                + "bool_value BOOL) ENGINE='searchindex' "
                + "ENGINE_ATTRIBUTE='{\"index_name\":\"%s\","
                + "\"table_name\":\"%s\"}'",
        mappingTableName, indexName, tableName);
SQLQueryRequest request = new SQLQueryRequest(query);

client.sqlQuery(request);

よくある質問

マッピングテーブル作成時に「Table 'instance.table' doesn't exist」エラーが返される

原因:指定されたデータテーブルまたは検索インデックスが存在しません。 CREATE TABLE ステートメントは、既存のデータテーブルまたは検索インデックスのマッピングテーブルのみを作成します。 データテーブルや検索インデックス自体は作成しません。

解決策:データテーブルまたは検索インデックス名が正しいことと、それらが存在することを確認してください。 その後、CREATE TABLE ステートメントを再実行してください。

マッピングテーブル作成時に「Table 'instance.table' already exists」エラーが返される

原因:マッピングテーブルがすでに存在します。 CREATE TABLE ステートメントによって作成されたか、明示的なマッピングテーブルなしで DESCRIBE または SELECT ステートメントが実行されたときに自動的に作成された可能性があります。 自動的に作成されたマッピングテーブルには、データテーブルのプライマリキー列のみが含まれます。

解決策

  • マッピングテーブルがすでに存在する場合にエラーが発生しないようにするには、CREATE TABLE ステートメントに IF NOT EXISTS を追加してください。

  • マッピングテーブルのスキーマを変更する場合は、まず DESCRIBE ステートメントを実行してスキーマを表示してください。 CREATE TABLE ステートメントで作成されたマッピングテーブルは、ALTER TABLE ステートメントを使用して変更できます。 自動的に作成されたマッピングテーブルは変更できません。 ワークロードへの影響を評価した後、DROP TABLE ステートメントを実行してマッピングテーブルを削除し、再作成してください。