Le SDK Tablestore pour Java crée une table de mappage pour une table ou un index de recherche existant afin d'activer l'accès aux données via SQL.
Prérequis
Installez le SDK Tablestore pour Java et initialisez un client.
Utilisez la version 5.13.0 ou ultérieure du SDK Tablestore pour Java.
Créez la table de données pour laquelle vous souhaitez créer une table de mappage. Pour créer une table de mappage pour un index de recherche, commencez par créer l'index de recherche.
Description
Appelez la méthode sqlQuery pour exécuter une instruction CREATE TABLE et créer une table de mappage pour une table ou un index de recherche existant.
SQLQueryResponse sqlQuery(SQLQueryRequest request)
Pour une table de données, la table de mappage doit porter le même nom que la table de données. Les noms de champs ne sont pas sensibles à la casse et les types de champs doivent correspondre à ceux de la table de données. Pour un index de recherche, vous pouvez personnaliser le nom de la table de mappage et utiliser ENGINE ainsi que ENGINE_ATTRIBUTE pour spécifier la table de données et l'index de recherche.
Pour connaître la syntaxe, les types de champs et les paramètres de l'instruction CREATE TABLE, consultez la rubrique Opérations DDL.
L'exemple suivant crée une table de mappage pour la table de données example_table, qui contient une colonne de clé primaire de type chaîne et quatre colonnes d'attributs.
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);
Paramètres
L'objet SQLQueryRequest contient le paramètre suivant.
|
Nom |
Type |
Description |
|
query (obligatoire) |
String |
L'instruction |
Exemples de scénarios
Créer une table de mappage pour un index de recherche
Pour créer une table de mappage pour un index de recherche, définissez ENGINE sur searchindex et spécifiez la table de données et l'index de recherche dans ENGINE_ATTRIBUTE. L'exemple suivant crée une table de mappage nommée example_search_table pour l'index de recherche example_index de la table de données example_table.
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);
FAQ
L'erreur Table 'instance.table' doesn't exist s'affiche lors de la création d'une table de mappage
Cause : La table de données ou l'index de recherche spécifié n'existe pas. L'instruction CREATE TABLE crée uniquement une table de mappage pour une table de données ou un index de recherche existant. Elle ne crée pas la table de données ni l'index de recherche.
Solution : Vérifiez que le nom de la table de données ou de l'index de recherche est correct et assurez-vous que la ressource existe. Exécutez ensuite à nouveau l'instruction CREATE TABLE.
L'erreur Table 'instance.table' already exists s'affiche lors de la création d'une table de mappage
Cause : La table de mappage existe déjà. Elle a pu être créée par une instruction CREATE TABLE ou générée automatiquement lors de l'exécution d'une instruction DESCRIBE ou SELECT sans table de mappage explicite. Une table de mappage créée automatiquement contient uniquement les colonnes de clé primaire et les colonnes prédéfinies de la table de données.
Solution :
Si vous souhaitez éviter une erreur lorsque la table de mappage existe déjà, ajoutez
IF NOT EXISTSà l'instructionCREATE TABLE.Si vous souhaitez modifier le schéma de la table de mappage, exécutez d'abord une instruction
DESCRIBEpour afficher le schéma. Vous pouvez utiliser une instructionALTER TABLEpour modifier une table de mappage créée par une instructionCREATE TABLE. Une table de mappage créée automatiquement ne peut pas être modifiée. Après avoir évalué l'impact sur vos charges de travail, exécutez une instructionDROP MAPPING TABLEpour supprimer la table de mappage, puis recréez-la.