既存のテーブルまたは 多次元インデックス のマッピングテーブルを作成するには、CREATE TABLE 文を実行します。マッピングテーブルを作成する場合は、テーブルのフィールド名、フィールドタイプ、およびプライマリキー情報を設定する必要があります。ビジネス要件に基づいて、データのクエリに使用される 実行エンジン を設定することもできます。 このトピックでは、既存のテーブルのマッピングテーブルを作成する方法について説明します。
詳細については、「多次元インデックスのマッピングテーブルを作成する」をご参照ください。
文
CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type [NOT NULL | NULL],...
| PRIMARY KEY(key_part[,key_part])
)
ENGINE='tablestore',
ENGINE_ATTRIBUTE='{"consistency": consistency [,"allow_inaccurate_aggregation": allow_inaccurate_aggregation]}';テーブルに プライマリキー列 が1つしかない場合は、次の構文を使用して既存のテーブルのマッピングテーブルを作成できます。
CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type PRIMARY KEY,column_name data_type [NOT NULL | NULL],...
)
ENGINE='tablestore',
ENGINE_ATTRIBUTE='{"consistency": consistency [,"allow_inaccurate_aggregation": allow_inaccurate_aggregation]}';パラメーター
パラメーター | 必須 | 説明 |
IF NOT EXISTS | いいえ | テーブルが存在するかどうかに関係なく、成功 応答 が返されるように指定します。 IF NOT EXISTS を指定しない場合、テーブルが存在しない場合にのみ成功 応答 が返されます。 |
table_name | はい | テーブルの名前。テーブルを識別するために使用されます。 SQL のテーブル名は、Tablestore のテーブル名と同じである必要があります。 |
column_name | はい | 列の名前。 SQL の列名は、Tablestore テーブルの列名と同等である必要があります。たとえば、Tablestore テーブルの列名が Aa の場合、SQL の列名は Aa、AA、aA、または aa である必要があります。 |
data_type | はい | 列の データの型 。例: BIGINT、DOUBLE、BOOL。 SQL の列の データの型 は、Tablestore テーブルの列の データの型 と一致する必要があります。 データの型 のマッピングの詳細については、「SQL データの型 マッピング」をご参照ください。 |
NOT NULL | NULL | いいえ | 列の値を NULL にできるかどうかを指定します。 デフォルト の CMK を使用するか、CMK を指定できます。
|
key_part | はい | プライマリキー列 の名前。複数の プライマリキー列 を指定できます。複数の プライマリキー列 はコンマ (,) で区切ります。 プライマリキー列 の名前は、列名に含める必要があります。 |
ENGINE | いいえ | マッピングテーブルを使用してデータをクエリするときに使用される 実行エンジン 。 デフォルト値 : tablestore。
|
ENGINE_ATTRIBUTE | いいえ | 実行エンジン の 属性 。このパラメーターの値は JSON 形式で、次の項目が含まれています。
|
例
例 1
次のサンプル コード は、exampletable1 という名前のマッピングテーブルを作成する方法の例を示しています。テーブルには、id プライマリキー列 と、colvalue 属性 列と content 属性 列が含まれています。 id プライマリキー列 と colvalue 属性 列は BIGINT 型で、content 属性 列は MEDIUMTEXT 型です。
CREATE TABLE exampletable1 (id BIGINT(20) PRIMARY KEY, colvalue BIGINT(20), content MEDIUMTEXT);例 2
次のサンプル コード は、exampletable2 という名前のマッピングテーブルを作成する方法の例を示しています。テーブルには、id プライマリキー列 と colvalue プライマリキー列 、および content 属性 列が含まれています。 id プライマリキー列 は BIGINT 型、colvalue プライマリキー列 は VARCHAR 型、content 属性 列は MEDIUMTEXT 型です。テーブルで実行されるクエリの結果は、 強力な整合性 モードである必要があります。
CREATE TABLE exampletable2 (id BIGINT(20), colvalue VARCHAR(1024), content MEDIUMTEXT, PRIMARY KEY(colvalue, id)) ENGINE_ATTRIBUTE='{"consistency": "strong"}';
よくある質問
マッピングテーブルを作成するときに エラーメッセージ "Table 'instancename.tablename' doesn't exist" が表示されるのはなぜですか?
考えられる原因:
マッピングテーブルを作成するテーブルが存在しません。
解決策:
SQL で CREATE TABLE 文を実行して、既存のテーブルまたは 多次元インデックス のマッピングテーブルのみを作成できます。マッピングテーブルを作成するテーブルまたは 多次元インデックス が存在することを確認してください。
マッピングテーブルを作成するときに エラーメッセージ "Table 'instancename.tablename' already exist" が表示されるのはなぜですか?
考えられる原因:
テーブルのマッピングテーブルが既に作成されています。
テーブルのマッピングテーブルを手動で作成しました。
Tablestore がテーブルのマッピングテーブルを自動的に作成しました。データテーブルのマッピングテーブルを作成せずに、DESCRIBE や SELECT などの SQL 文を直接使用してデータをクエリすると、Tablestore はデータテーブルのマッピングテーブルを自動的に作成します。Tablestore によって自動的に作成されるマッピングテーブルには、データテーブルの プライマリキー列 と 事前定義列 のみが含まれます。マッピングテーブルの 属性 列は更新できません。
解決策:
DESCRIBE文を使用して、既存のマッピングテーブルの 構造 を表示できます。 構造 がクエリ要件を満たしていない場合は、マッピングテーブルの 属性 列を更新できます。システムによって自動的に作成されたマッピングテーブルの 属性 列は更新できません。マッピングテーブルを削除して再作成する前に、ビジネスに影響がないことを確認してください。
SQL クエリの一般的な エラー と ソリューション の詳細については、「SQL クエリの一般的なエラーのトラブルシューティング」をご参照ください。
参照
マッピングテーブルを作成した後、ビジネス要件に基づいて次の 操作 を実行できます。マッピングテーブルの 属性 列を更新する、マッピングテーブルの説明をクエリする、マッピングテーブルを一覧表示する、インデックスの説明をクエリする、または マッピングテーブルを削除する。
SELECT 文を使用して、マッピングテーブルのデータをクエリおよび分析できます。詳細については、「データをクエリする」をご参照ください。
指定した検索インデックスを使用してデータをクエリおよび分析する場合、
CREATE TABLE文を実行して、検索インデックスのマッピングテーブルを作成できます。詳細については、「検索インデックスのマッピングテーブルを作成する」をご参照ください。