创建映射关系

更新时间:
复制 MD 格式

通过 Java SDK 为已有数据表或多元索引创建映射关系,以便通过 SQL 访问数据。

前提条件

功能说明

调用 sqlQuery 方法执行 CREATE TABLE 语句,为已有数据表或多元索引创建映射关系。

SQLQueryResponse sqlQuery(SQLQueryRequest request)

为数据表创建映射关系时,映射表名称必须与数据表名称一致,字段名称不区分大小写,字段类型需要与数据表字段类型对应。为多元索引创建映射关系时,映射表名称可以自定义,并通过 ENGINEENGINE_ATTRIBUTE 指定数据表和多元索引。

有关 CREATE TABLE 语句的语法、字段类型和参数说明,请参见DDL 操作

以下示例为 example_table 数据表创建映射关系。该数据表包含一个字符串主键列和四个属性列。

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);

参数说明

SQLQueryRequest 包含以下参数。

名称

类型

说明

query(必选)

String

CREATE TABLE 语句,用于定义映射表名称、字段、主键和执行引擎。数据表映射和多元索引映射使用不同的语法。

场景示例

为多元索引创建映射关系

创建多元索引的映射关系时,将 ENGINE 设置为 searchindex,并在 ENGINE_ATTRIBUTE 中指定数据表和多元索引名称。以下示例为 example_table 数据表的 example_index 多元索引创建名为 example_search_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);

常见问题

创建映射关系时提示 Table 'instance.table' doesn't exist

原因:指定的数据表或多元索引不存在。CREATE TABLE 语句仅为已有数据表或多元索引创建映射关系,不会创建实际的数据表或多元索引。

解决方案:检查数据表或多元索引名称是否正确,并确保相应的数据表或多元索引已创建,然后重新执行 CREATE TABLE 语句。

创建映射关系时提示 Table 'instance.table' already exists

原因:映射关系已存在。该映射关系可能由 CREATE TABLE 语句创建,也可能在未显式创建映射关系的情况下执行 DESCRIBESELECT 语句时自动创建。自动创建的映射关系仅包含数据表的主键列和预定义列。

解决方案

  • 如果只需避免重复创建报错,请在 CREATE TABLE 语句中使用 IF NOT EXISTS

  • 如果需要调整映射关系的结构,请先使用 DESCRIBE 语句查看映射关系。通过 CREATE TABLE 语句创建的映射关系可以使用 ALTER TABLE 语句修改;自动创建的映射关系无法修改,需要评估业务影响后使用 DROP MAPPING TABLE 语句删除,再重新创建。