创建映射关系

更新时间:
复制为 MD 格式

通过create table语句为已存在的表或者多元索引创建映射关系。创建映射关系时需要配置表的字段名称、字段类型和主键信息以及根据需要配置查询数据时的执行引擎。

说明

关于 CREATE TABLE 语句的语法和字段类型映射规则,请参见创建表的映射关系创建多元索引的映射关系

前提条件

参数

参数

说明

query

SQL 语句。填写 CREATE TABLE 语句,列类型须与数据表中对应列的数据类型匹配。

示例

说明

以下示例以数据表的映射关系为例。如需创建多元索引的映射关系,将示例中的 SQL 语句替换为对应的多元索引 CREATE TABLE 语句即可。

与关系型数据库不同,Tablestore 的 CREATE TABLE 语句不会新建表,而是为已有的 NoSQL 数据表建立 SQL 映射,使其支持 SQL 查询。

以下示例使用语句create table test_table (pk varchar(1024), long_value bigint, double_value double, string_value mediumtext, bool_value bool, primary key(pk))创建 test_table 数据表的映射关系。

const params = {
  // CREATE TABLE 语句,为已有数据表建立 SQL 映射关系。
  // 列类型须与数据表中对应列的数据类型匹配,SQL 语法详见 CREATE TABLE 语法说明。
  query: "create table test_table (pk varchar(1024), long_value bigint, double_value double, string_value mediumtext, bool_value bool, primary key(pk))",
}

client.sqlQuery(params, function (err, data) {
  if (err) {
    console.log('sqlQuery error:', err.toString());
  } else {
    console.log('sqlQuery success:', data);
  }
});

常见问题

创建映射关系时出现Table 'instancename.tablename' doesn't exist ?

  • 出现此问题的可能原因如下:

    创建映射关系时,指定的表不存在。

  • 解决方案:

    SQL中的Create Table语句只能为已存在的表或者多元索引创建映射关系。请确保要创建映射关系的表或者多元索引存在。

创建映射关系时出现Table 'instancename.tablename' already exist ?

  • 出现此问题的可能原因如下:

    该表已创建映射关系。

    • 用户已手动为该表创建映射关系。

    • 表格存储后台已自动创建该表的映射关系。在未创建数据表的映射关系的情况下,直接使用SQL语句(例如DESCRIBE、SELECT等)查询数据,表格存储后台将自动创建该数据表的映射关系。自动创建的映射表仅包含数据表的主键列和预定义列,并且不支持更新属性列。

  • 解决方案:

    您可以通过DESCRIBE语句查看现有映射表的表结构,如果不符合业务查询要求,您可以更新映射表属性列。系统自动创建的映射表无法更新属性列,请在确保不影响业务的情况下删除并重新创建映射表。

说明

更多关于SQL查询功能的常见错误及其解决方案,请参见SQL查询常见错误排查

相关文档