创建映射关系

更新时间:
复制 MD 格式

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

说明

Tablestore 不会自动为数据表创建 SQL 映射表。要通过 SQL 访问数据表,需要先执行 CREATE TABLE 创建映射关系。

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

注意事项

表格存储PHP SDK从5.1.0版本开始支持SQL查询功能,使用SQL查询功能时,请确保安装了正确的PHP SDK版本。

关于PHP SDK历史迭代版本的更多信息,请参见PHP SDK历史迭代版本。

前提条件

参数说明

SQLQueryRequest 包含以下参数。

名称

类型

说明

query(必选)

String

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

示例

说明

本文以创建表的映射关系为例介绍。如果要创建多元索引的映射关系,您只需将示例中的SQL语句替换为创建多元索引映射关系的SQL语句即可。

以下示例用于使用CREATE TABLE `tableName` (`PK0` BIGINT(20),`PK1` VARCHAR(1024),`geo` MEDIUMTEXT,`boolean` BOOL,`array` MEDIUMTEXT,`double` DOUBLE,`text` MEDIUMTEXT,`keyword` MEDIUMTEXT,`nested` MEDIUMTEXT,`long` BIGINT(20),PRIMARY KEY(`PK0`,`PK1`));语句创建tableName表的映射关系。

$request = array(
    'query' => 'CREATE TABLE `tableName` (`PK0` BIGINT(20),`PK1` VARCHAR(1024),`geo` MEDIUMTEXT,`boolean` BOOL,`array` MEDIUMTEXT,`double` DOUBLE,`text` MEDIUMTEXT,`keyword` MEDIUMTEXT,`nested` MEDIUMTEXT,`long` BIGINT(20),PRIMARY KEY(`PK0`,`PK1`));',
);
$response = $otsClient->sqlQuery($request);
print json_encode($response, JSON_PRETTY_PRINT);

常见问题

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

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

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

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

原因:映射关系已存在。该映射关系由 CREATE TABLE 语句创建。

解决方案:

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

  • 如果需要调整映射关系的结构,请先使用 DESCRIBE 语句查看映射关系,再使用 ALTER TABLE 语句修改。

相关文档