Tablestore SDK for PHP を使用して、既存のテーブルまたは検索インデックスのマッピングテーブルを作成し、データへの SQL アクセスを有効にします。
詳細については、「テーブルのマッピングテーブルを作成する」および「検索インデックスのマッピングテーブルを作成する」をご参照ください。
使用上の注意
SQL クエリは、Tablestore SDK for PHP V5.1.0 以降でサポートされています。サポートされているバージョンがインストールされていることを確認してください。
Tablestore SDK for PHP のバージョン履歴については、Tablestore SDK for PHP のバージョン履歴をご参照ください。
前提条件
-
クライアントが初期化されていること。 詳細については、「Tablestore クライアントの初期化」をご参照ください。
-
検索インデックスのマッピングテーブルを作成する場合は、まず 検索インデックスを作成する必要があります。
パラメーター
SQLQueryRequest には、次のパラメーターがあります。
|
名前 |
タイプ |
説明 |
|
query (必須) |
String |
マッピングテーブル名、フィールド、プライマリキー、クエリエンジンを定義する |
例
このトピックでは、テーブルのマッピングテーブルを作成する方法について説明します。検索インデックスのマッピングテーブルを作成する場合は、サンプルコードの SQL 文を、検索インデックスのマッピングテーブルを作成するために使用する SQL 文に置き換えてください。
次の例では、CREATE TABLE `tableName` (`PK0` BIGINT(20),`PK1` VARCHAR(1024),`geo` MEDIUMTEXT,`boolean` BOOL,`array` MEDIUMTEXT,`double` DOUBLE,`text` MEDIUMTEXT,`keyword` MEDIUMTEXT,`nested` MEDIUMTEXT,`long` BIGINT(20),PRIMARY KEY(`PK0`,`PK1`)); ステートメントを使用して、テーブル「tableName」のマッピングテーブルを作成する方法を示します。
$request = array(
'query' => 'CREATE TABLE `tableName` (`PK0` BIGINT(20),`PK1` VARCHAR(1024),`geo` MEDIUMTEXT,`boolean` BOOL,`array` MEDIUMTEXT,`double` DOUBLE,`text` MEDIUMTEXT,`keyword` MEDIUMTEXT,`nested` MEDIUMTEXT,`long` BIGINT(20),PRIMARY KEY(`PK0`,`PK1`));',
);
$response = $otsClient->sqlQuery($request);
print json_encode($response, JSON_PRETTY_PRINT);
よくある質問
マッピングテーブルを作成するときに エラーメッセージ "Table 'instancename.tablename' doesn't exist" が表示されるのはなぜですか?
考えられる原因:
マッピングテーブルを作成するテーブルが存在しません。
解決策:
SQL で CREATE TABLE 文を実行して、既存のテーブルまたは 多次元インデックス のマッピングテーブルのみを作成できます。マッピングテーブルを作成するテーブルまたは 多次元インデックス が存在することを確認してください。
マッピングテーブルを作成するときに エラーメッセージ "Table 'instancename.tablename' already exist" が表示されるのはなぜですか?
考えられる原因:
テーブルのマッピングテーブルが既に作成されています。
テーブルのマッピングテーブルを手動で作成しました。
Tablestore がテーブルのマッピングテーブルを自動的に作成しました。データテーブルのマッピングテーブルを作成せずに、DESCRIBE や SELECT などの SQL 文を直接使用してデータをクエリすると、Tablestore はデータテーブルのマッピングテーブルを自動的に作成します。Tablestore によって自動的に作成されるマッピングテーブルには、データテーブルの プライマリキー列 と 事前定義列 のみが含まれます。マッピングテーブルの 属性 列は更新できません。
解決策:
DESCRIBE文を使用して、既存のマッピングテーブルの 構造 を表示できます。 構造 がクエリ要件を満たしていない場合は、マッピングテーブルの 属性 列を更新できます。システムによって自動的に作成されたマッピングテーブルの 属性 列は更新できません。マッピングテーブルを削除して再作成する前に、ビジネスに影響がないことを確認してください。
SQL クエリの一般的な エラー と ソリューション の詳細については、「SQL クエリの一般的なエラーのトラブルシューティング」をご参照ください。
関連ドキュメント
-
マッピングテーブルを作成した後、マッピングテーブルの属性列を更新したり、マッピングテーブルの情報をクエリしたり、マッピングテーブルの名前を一覧表示したり、テーブルのインデックス情報をクエリしたり、マッピングテーブルを削除したりできます。 詳細については、「マッピングテーブルの属性列の更新」、「テーブルに関する情報のクエリ」、「マッピングテーブル名のリスト化」、「テーブルのインデックス情報のクエリ」、および「マッピングテーブルの削除」をご参照ください。
-
SELECT ステートメントを使用して、マッピングテーブル内のデータをクエリおよび分析できます。 詳細については、「データのクエリ」をご参照ください。