O Tablestore SDK for Java cria uma tabela de mapeamento para uma tabela ou índice de pesquisa existente, permitindo o acesso aos dados via SQL.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize um cliente.
Use a versão 5.13.0 ou superior do Tablestore SDK for Java.
Crie a tabela de dados para a qual deseja criar uma tabela de mapeamento. Para criar uma tabela de mapeamento para um índice de pesquisa, primeiro crie o índice de pesquisa.
Descrição
Chame o método sqlQuery para executar uma instrução CREATE TABLE e criar uma tabela de mapeamento para uma tabela ou índice de pesquisa existente.
SQLQueryResponse sqlQuery(SQLQueryRequest request)
Para tabelas de dados, a tabela de mapeamento deve ter o mesmo nome da tabela de dados. Os nomes dos campos não diferenciam maiúsculas de minúsculas, e os tipos de campo devem corresponder aos tipos de campo da tabela de dados. Para índices de pesquisa, personalize o nome da tabela de mapeamento e use ENGINE e ENGINE_ATTRIBUTE para especificar a tabela de dados e o índice de pesquisa.
Para obter detalhes sobre a sintaxe, os tipos de campo e os parâmetros da instrução CREATE TABLE, consulte Operações DDL.
O exemplo a seguir cria uma tabela de mapeamento para a tabela de dados example_table, que contém uma coluna de chave primária do tipo string e quatro colunas de atributo.
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 contém o seguinte parâmetro.
|
Nome |
Tipo |
Descrição |
|
query (obrigatório) |
String |
Instrução |
Exemplos de cenários
Criar uma tabela de mapeamento para um índice de pesquisa
Para criar uma tabela de mapeamento para um índice de pesquisa, defina ENGINE como searchindex e especifique a tabela de dados e o índice de pesquisa em ENGINE_ATTRIBUTE. O exemplo abaixo cria uma tabela de mapeamento chamada example_search_table para o índice de pesquisa example_index da tabela de dados 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);
Perguntas frequentes
Erro Table 'instance.table' doesn't exist ao criar uma tabela de mapeamento
Causa: A tabela de dados ou o índice de pesquisa especificado não existe. A instrução CREATE TABLE cria apenas uma tabela de mapeamento para uma tabela de dados ou índice de pesquisa já existente, mas não cria a tabela de dados ou o índice de pesquisa em si.
Solução: Verifique se o nome da tabela de dados ou do índice de pesquisa está correto e confirme se ele existe. Em seguida, execute novamente a instrução CREATE TABLE.
Erro Table 'instance.table' already exists ao criar uma tabela de mapeamento
Causa: A tabela de mapeamento já existe. Ela pode ter sido criada por uma instrução CREATE TABLE ou gerada automaticamente durante a execução de uma instrução DESCRIBE ou SELECT sem uma tabela de mapeamento explícita. Uma tabela de mapeamento criada automaticamente contém apenas as colunas de chave primária e as colunas predefinidas da tabela de dados.
Solução:
Para evitar erros quando a tabela de mapeamento já existir, adicione
IF NOT EXISTSà instruçãoCREATE TABLE.Caso precise alterar o esquema da tabela de mapeamento, execute primeiro uma instrução
DESCRIBEpara visualizar o esquema atual. Use uma instruçãoALTER TABLEpara modificar uma tabela de mapeamento criada viaCREATE TABLE. Tabelas criadas automaticamente não podem ser modificadas. Após avaliar o impacto nas suas cargas de trabalho, execute uma instruçãoDROP MAPPING TABLEpara excluir a tabela de mapeamento e recriá-la.