通过 PHP SDK 为已有数据表或多元索引创建映射关系,以便通过 SQL 访问数据。
关于create table语句的更多信息,请参见创建表的映射关系和创建多元索引的映射关系。
注意事项
表格存储PHP SDK从5.1.0版本开始支持SQL查询功能,使用SQL查询功能时,请确保安装了正确的PHP SDK版本。
关于PHP SDK历史迭代版本的更多信息,请参见PHP SDK历史迭代版本。
前提条件
-
如需创建多元索引的映射关系,必须首先创建多元索引。
参数说明
SQLQueryRequest 包含以下参数。
|
名称 |
类型 |
说明 |
|
query(必选) |
String |
|
示例
本文以创建表的映射关系为例介绍。如果要创建多元索引的映射关系,您只需将示例中的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 'instancename.tablename' doesn't exist ?
出现此问题的可能原因如下:
创建映射关系时,指定的表不存在。
解决方案:
SQL中的Create Table语句只能为已存在的表或者多元索引创建映射关系。请确保要创建映射关系的表或者多元索引存在。
创建映射关系时出现Table 'instancename.tablename' already exist ?
出现此问题的可能原因如下:
该表已创建映射关系。
用户已手动为该表创建映射关系。
表格存储后台已自动创建该表的映射关系。在未创建数据表的映射关系的情况下,直接使用SQL语句(例如DESCRIBE、SELECT等)查询数据,表格存储后台将自动创建该数据表的映射关系。自动创建的映射表仅包含数据表的主键列和预定义列,并且不支持更新属性列。
解决方案:
您可以通过
DESCRIBE语句查看现有映射表的表结构,如果不符合业务查询要求,您可以更新映射表属性列。系统自动创建的映射表无法更新属性列,请在确保不影响业务的情况下删除并重新创建映射表。
更多关于SQL查询功能的常见错误及其解决方案,请参见SQL查询常见错误排查。