Tablestore SDK for Java crea una tabla de asignación para una tabla o un índice de búsqueda existente con el fin de habilitar el acceso SQL a los datos.
Requisitos previos
Instale Tablestore SDK for Java e inicialice un cliente.
Utilice Tablestore SDK for Java 5.13.0 o posterior.
Create the data table para la cual desea crear una tabla de asignación. Para crear una tabla de asignación para un índice de búsqueda, primero create the search index.
Descripción
Llame al método sqlQuery para ejecutar una instrucción CREATE TABLE y crear una tabla de asignación para una tabla o un índice de búsqueda existente.
SQLQueryResponse sqlQuery(SQLQueryRequest request)
Para una tabla de datos, la tabla de asignación debe tener el mismo nombre que dicha tabla. Los nombres de los campos no distinguen entre mayúsculas y minúsculas, y los tipos de campo deben corresponder a los de la tabla de datos. Para un índice de búsqueda, puede personalizar el nombre de la tabla de asignación y usar ENGINE y ENGINE_ATTRIBUTE para especificar la tabla de datos y el índice de búsqueda.
Para consultar la sintaxis, los tipos de campo y los parámetros de la instrucción CREATE TABLE, consulte DDL operations.
A continuación se muestra un ejemplo que crea una tabla de asignación para la tabla de datos example_table, que contiene una columna de clave primaria de tipo cadena y cuatro columnas de atributos.
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);
Parámetros
SQLQueryRequest contiene el siguiente parámetro.
|
Nombre |
Tipo |
Descripción |
|
query (obligatorio) |
String |
La instrucción |
Escenarios de ejemplo
Crear una tabla de asignación para un índice de búsqueda
Para crear una tabla de asignación para un índice de búsqueda, establezca ENGINE en searchindex y especifique la tabla de datos y el índice de búsqueda en ENGINE_ATTRIBUTE. A continuación se muestra un ejemplo que crea una tabla de asignación llamada example_search_table para el índice de búsqueda example_index de la tabla de datos 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);
Preguntas frecuentes
Se devuelve el error Table 'instance.table' doesn't exist al crear una tabla de asignación
Causa: La tabla de datos o el índice de búsqueda especificado no existe. La instrucción CREATE TABLE solo crea una tabla de asignación para una tabla de datos o un índice de búsqueda existente; no crea la tabla de datos ni el índice de búsqueda.
Solución: Compruebe si el nombre de la tabla de datos o del índice de búsqueda es correcto y asegúrese de que exista. Después, ejecute nuevamente la instrucción CREATE TABLE.
Se devuelve el error Table 'instance.table' already exists al crear una tabla de asignación
Causa: La tabla de asignación ya existe. Es posible que se haya creado mediante una instrucción CREATE TABLE o que se haya generado automáticamente al ejecutar una instrucción DESCRIBE o SELECT sin una tabla de asignación explícita. Una tabla de asignación creada automáticamente solo contiene las columnas de clave primaria y las columnas predefinidas de la tabla de datos.
Solución:
Si desea evitar un error cuando la tabla de asignación ya existe, agregue
IF NOT EXISTSa la instrucciónCREATE TABLE.Si desea cambiar el esquema de la tabla de asignación, ejecute primero una instrucción
DESCRIBEpara consultar el esquema. Use una instrucciónALTER TABLEpara modificar una tabla de asignación creada mediante una instrucciónCREATE TABLE. No es posible modificar una tabla de asignación creada automáticamente. Tras evaluar el impacto en sus cargas de trabajo, ejecute una instrucciónDROP MAPPING TABLEpara eliminar la tabla de asignación y vuelva a crearla.