详情页标题前

腾讯云对象存储Select 命令

详情页1

概述

对象存储(Cloud Object Storage,COS)Select 功能仅支持 SELECT SQL 查询指令,以便检索所需的部分数据,减少传输的数据量。这样可以减少成本,同时降低请求延时。以下是 SELECT 查询支持的标准子句:SELECT 语句WHERE 子句LIMIT 子句注意 COS Select 当前暂不支持子句查询或者 joins。

SELECT 语句

SELECT 语句可以实现从 COS 对象中检索到您所希望看到的数据,您可以以列的名称、函数或者表达式等维度进行查询,并以一个列表的形式返回查询结果。SELECT 语句调用格式如下:

SELECT *SELECT projection [ AS column_alias | column_alias ] [, ...]

第一句 SELECT 语句带有*(星号),将返回 COS 对象中的所有列。第二句 SELECT 语句使用用户自定义输出标量表达式,projection为每列创建自定义名称的输出列表。

WHERE 子句

WHERE 子句使用以下语法:

WHERE condition

WHERE 子句通过 condition 进行过滤。condition 是一种可以返回布尔结果的表达式,只有返回值为 TRUE 的行才会在结果中输出。

LIMIT 子句

LIMIT 子句使用以下语法:

LIMIT number

LIMIT 子句限制每次查询返回的记录数量,您可以通过 number 参数指定这个限制。

访问属性

SELECT 和 WHERE 子句可以通过以下任意方式选择查询的字段,您可以根据文件格式是 CSV 还是 JSON 进行选择。

CSV

列编号:您可以通过 _N指定查询第 N 列的数据。对于任意一份 CSV 文件,列编号从1开始递增。如第一列编号为_1 ,第二列编号为_2 。在 SELECT 和 WHERE 子句中,通过_N或者alias._N指定需要查询的列均为合法的方式。列表头:如果待查询的 CSV 文件中有表头, SELECT 和 WHERE 子句中可以通过这些表头指定需要查询的列。在 SQL 语句中,您可以在 SELECT 和 WHERE 子句中通过alias.column_name 或者column_name的方式指定。

JSON

文档(Document):您可以通过alias.name的方式访问 JSON 文档。嵌套数组则可以通过如alias.name1.name2.name3的方式访问。列表(List):您可以通过索引访问列表中的元素,索引从0开始编号,并使用[]操作符。例如,您可以通过alias[1]访问 JSON 列表中的第2个元素。如果您需要访问嵌套数组,也可以通过如alias.name1.name2[1].name3这样的方式进行访问。示例
以下为该示例的数据样本:

{    "name": "Leon",    "org": "Tencent",    "projects":        [         {"project_name":"project1", "completed":true},         {"project_name":"project2", "completed":false}        ]}

示例 1:以下为在数据样本中查询 name 的 SQL 语句和查询结果:

Select s.name from COSObject s
{"name":"Leon"}

示例 2:以下为在数据样本中查询 project_name 的 SQL 语句和查询结果:

Select s.projects[0].project_name from COSObject s
{"project_name":"project1"}

表头和属性名称的大小写敏感性

您可以使用双引号来标注 CSV 文件的表头和 JSON 文件的属性名称是否大小写敏感。如果不添加双引号,则说明表头/属性名是大小写不敏感的。在您设定不明确的情况下,COS Select 可能会抛出异常。示例 1:查询表头/属性名称中有”NAME”的对象。
以下 SQL 示例未使用双引号,表明是大小写不敏感的,由于表中有这个表头,所以最终会成功返回数值。

SELECT s.name from COSObject s

以下 SQL 示例使用双引号,表明是大小写敏感的。由于表中实际上未包含这个表头,所以最终会返回400错误SQLParsingError

SELECT s."name" from COSObject s

示例 2:查询表头/属性名称中有”NAME”和”name”的对象。
以下 SQL 示例未使用双引号,表明是大小写不敏感的,由于表中同时存在”NAME”和”name”两个表头,查询指令设定不明确,会抛出异常 AmbiguousFieldName。

SELECT s.name from COSObject s

以下 SQL 示例使用了双引号,表明是大小写敏感的,由于表中已经存在”NAME”这个表头,会成功返回查询结果。

SELECT s."NAME" from COSObject s

使用保留字段作为用户自定义字段

COS Select 的 SQL 表达式具有一些保留字段,包含了函数名称,数据类型,操作符等。在某些情况下,用户可能会使用这些保留字段作为 CSV 文件的列表头或者 JSON 文件的属性名称,这时候可能与保留字段存在冲突。在这种情况下,您可以使用双引号来表明您正在使用自定义字段,否则 COS 将返回400 parse error如您需要查阅完整的保留字段列表,请参见 保留字段示例:待查询的对象的表头/属性名称具有一个保留字段”CAST”。
以下 SQL 示例使用了双引号表明 CAST 是用户自定义字段,将成功返回查询结果。

SELECT s."CAST" from COSObject s

以下 SQL 示例未使用双引号表明 CAST 是用户自定义字段,COS 将作为保留字段处理,将返回400 parse error

SELECT s.CAST from COSObject s

标量表达式

在 SELECT 语句和 WHERE 子句中,您可以使用 SQL 标量表达式(返回标量的表达式)。目前 COS Select 支持以下形式:literal:SQL 文本。column_reference:column_name 或者 alias.column_name。unary_opexpression: SQL 一元运算符。expressionbinary_opexpression:SQL 二元运算符。func_name:被调用的标量函数的名称。expression [ NOT ] BETWEEN expression AND expressionexpression LIKE expression [ ESCAPE expression ]
对象存储官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/144722.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云云直播延时播放

    延迟播放是针对用户端拉流时候进行的延迟播放的一种功能,使用场景主要针对重要直播活动,避免在直播的过程中造成突发状况,提前把控做好相对处理,可以直接通过参数设置。 注意事项 延迟播放目前可以通过三种方式实现:直接通过云直播控制台配置,具体请参见 延播配置。调用 延时直播接口 实现延播功能。通过推流地址后面加上 txDelayTime 参数来快速实现延播功能,具…

    2023年12月9日
  • 腾讯云专用宿主机在 CDH 上分配专用实例

    步骤1:进入实例分配页面 1. 打开 专用宿主机控制台。2. 勾选列表中的宿主机,单击上方分配云主机。 步骤2:选择宿主机 选择您所购买的宿主机资源所在的地域与可用区,并选择该可用区下的专用宿主机。若您选中一台宿主机,您的专用实例将会被分配在这台指定的宿主机上。若您选择多台同类型宿主机,您选择的宿主机将会作为分配专用实例的资源池。 步骤3:选择实例 CPU …

    腾讯云 2023年12月9日
  • 腾讯云容器服务概述同尘科技

    对象管理说明 您可以通过控制台直接操作原生 Kubernetes 对象,例如 Deployment、DaemonSet 等。Kubernetes 对象是集群中持久实体,用来承载集群内运行的业务。不同的 Kubernetes 对象可以表达不同的含义:正在运行的应用程序应用程序可用的资源应用程序关联的策略等您可以直接通过 容器服务控制台 或者 Kubernete…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 函数计算中,函数计算设置了oss触发器,有什么办法可以等文件上传完再一次性执行的?-云小二-阿里云

    函数计算中,函数计算设置了oss触发器,文件上传到OSS触发函数执行多次,这种有什么办法可以等文件上传完再一次性执行的?配置触发器的时候可以选择支持哪些操作的。 以下为热心网友提供的参考意见 在函数计算中,您可以创建并配置原生OSS触发器,当在OSS上发生特定事件时会自动触发函数执行。这可以让您轻松响应如文件上传等事件,无需在代码中增加监听事件逻辑即可快速实…

    阿里云 2024年1月3日
  • 在PolarDB中,从RDS迁移后,原来mysql的定时执行事件要重新添加吗?-云小二-阿里云

    在PolarDB中,从RDS迁移后,原来mysql的定时执行事件要重新添加吗? 以下为热心网友提供的参考意见 在PolarDB中,从RDS迁移后,原来MySQL的定时执行事件不需要重新添加。因为PolarDB兼容MySQL协议,所以在迁移过程中,原有的定时任务会自动保留。但是,如果迁移过程中出现了问题,导致定时任务丢失,那么需要重新添加。 以下为热心网友提供…

    阿里云 2024年1月2日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。