Tablestore SDK for Python は、既存のデータテーブルまたは検索インデックス用のマッピングテーブルを作成し、データへの SQL アクセスを可能にします。
前提条件
Tablestore SDK for Python をインストールし、クライアントを初期化します。
SQL クエリにはバージョン 5.4.2 以降が必要です。最新バージョンの使用を推奨します。
説明
exe_sql_query メソッドを呼び出して CREATE TABLE 文を実行し、既存のデータテーブルまたは検索インデックスのマッピングテーブルを作成します。
def exe_sql_query(self, query)
データテーブルの場合、マッピングテーブルはデータテーブルと同じ名前である必要があります。フィールド名では大文字と小文字は区別されず、フィールドタイプはデータテーブルのフィールドタイプに対応している必要があります。検索インデックスの場合、マッピングテーブル名をカスタマイズし、ENGINE と ENGINE_ATTRIBUTE を使用してデータテーブルと検索インデックスを指定できます。
CREATE TABLE ステートメントの構文、フィールドタイプ、およびパラメーターについては、「DDL 操作」をご参照ください。
次の例では、example_table データテーブルのマッピングテーブルを作成します。
query = """
CREATE TABLE example_table (
pk VARCHAR(1024), long_value BIGINT, double_value DOUBLE,
string_value MEDIUMTEXT, bool_value BOOL, PRIMARY KEY(pk)
)
"""
client.exe_sql_query(query)
パラメーター
exe_sql_query メソッドには、次のパラメーターが含まれています。
|
名前 |
型 |
説明 |
|
query (必須) |
文字列 |
実行する |
シナリオ例
検索インデックス用のマッピングテーブルの作成
ENGINE を searchindex に設定し、ENGINE_ATTRIBUTE でデータテーブルと検索インデックスを指定します。 次の例では、example_table データテーブルの example_index 検索インデックス用の example_search_table マッピングテーブルを作成します。
query = """
CREATE TABLE example_search_table (
pk MEDIUMTEXT, long_value BIGINT, string_value MEDIUMTEXT
) ENGINE='searchindex'
ENGINE_ATTRIBUTE='{"index_name":"example_index","table_name":"example_table"}'
"""
client.exe_sql_query(query)
よくある質問
Table 'instance.table' doesn't exist というエラーが返される
原因: 指定されたデータテーブルまたは検索インデックスが存在しません。CREATE TABLE 文は、マッピングテーブルのみを作成します。
解決策:名前を確認し、データテーブルまたは検索インデックスが存在することを確認してから、文を再度実行してください。
Table 'instance.table' already exists エラーが返される
原因: マッピングテーブルはすでに存在します。また、DESCRIBE または SELECT ステートメントによって、プライマリキー列と事前定義列のみを含むマッピングテーブルが自動的に作成されることもあります。
解決策: 重複作成エラーを防ぐには、IF NOT EXISTS を使用します。自動作成されたマッピングテーブルを変更するには、影響を評価し、マッピングテーブルを削除してから再作成します。