向Object执行Sql语句
所有文档

          对象存储 BOS

          向Object执行Sql语句

          接口说明

          此接口用于向Bucket中指定object执行SQL语句,选取出指定内容返回。请求者必须对选取的object具有read权限。在SelectObject前需要确保对应的Bucket和Object已经存在,详细信息参考 SelectObject 开发者文档。

          message具体格式详细说明:

          select-msg.png

          1. prelude部分一共8个byte,前4byte表示message总长度,后4byte表示headers部分总长度,chunk总长度(prelude前4byte存储的值) - header总长度 - 8byte的prelude - 4byte的crc32 = payload部分数据总长度;crc32表示整个message的纠删码
          2. headers包含以下自定义<key,value>:“message-type”: {"Records", "Cont", "End"} ; "error-code": 具体错误码 ; "error-message": "详细错误信息"
          3. Payload表示返回的真实数据,可以是任意格式;其中Continuation message的Payload里边包括BytesScanned和BytesReturned两个字段表示的select进度信息

          请求URI

          POST /v1/{bucketName}/{objectKey}?select

          参数名称 参数类型 是否必须 描述 示例值 参数位置
          bucketName String bucket的名称 "bucketName_example" Path
          objectKey String object的名称 "objectKey_example" Path
          type String select的目标object类型,目前支持json/csv "type_example" Query

          请求体参数

          请求体字段数据结构说明

          参数名称 参数类型 是否必须 描述 示例值
          selectRequest SelectRequest json body根节点

          SelectRequest字段数据结构说明

          参数名称 参数类型 是否必须 描述 示例值
          expression String 经过base64编码的sql语句 c2VsZWN0IGNvdW50KCopIGZyb20gbxkl2JqZWN0IHdoZXJlIF80ID4gNDU=
          expressionType String 查询语句语法类型,只支持"SQL" SQL
          inputSerialization InputSerialization 输入流节点,其子节点描述查询的object格式信息
          outputSerialization OutputSerialization 输出流节点,其子节点描述查询结果返回格式信息
          requestProgress RequestProgress + requestProgress 否 - select进度信息节点,其子节点描述select操作的执行进度,3s定时返回给用户

          InputSerialization字段数据结构说明

          参数名称 参数类型 是否必须 描述 示例值
          compressionType String 指定查询的object是否压缩,可选值为"NONE"或"GZIP" NONE
          csv Csv csv节点,其子节点描述csv文件相关信息

          Csv字段数据结构说明

          参数名称 参数类型 是否必须 描述 示例值
          fileHeaderInfo String 可选值NONE/IGNORE/USE,指定CSV文件首行头信息,默认值NONE代表无header信息,IGNORE代表有header信息但是忽略,NONE和IGNORE意味着只能用列序号取出某一列;USE表示使用header信息,只能用header名取出某一列 NONE
          recordDelimiter String 指定csv文件换行符,以Base64编码,默认值为\n(可选),最多为2个字符,例如\r\n \r\n
          fieldDelimiter String 指定csv文件列分隔符,以Base64编码,默认值为,(可选),最多为1个字符,例如; ;
          quoteCharacter String 指定csv文件引号字符,以Base64编码,在CSV中引号内的换行符,列分隔符将被视作普通字符;默认值为双引号"(可选),最多为1个字符,例如单引号' '
          commentCharacter String 指定csv文件注释符,以Base64编码,一行以注释符开头则表示改行可以忽略;默认值为#(可选),最多为2个字符,例如// //

          OutputSerialization字段数据结构说明

          参数名称 参数类型 是否必须 描述 示例值
          outputHeader Boolean 在返回结果开头输出CSV头信息,默认false; 需要fileHeaderInfo字段取值USE,该值为true会在返回结果的每一个Records message第一行加上对应的csv header名称;可选值为false/true false
          csv Csv csv节点,其子节点描述返回的csv数据相关信息

          RequestProgress字段数据结构说明

          参数名称 参数类型 是否必须 描述 示例值
          enabled Boolean 描述是否需要定时返回进度信息,可选值为false/true;如果数据筛选耗时久可能导致504超时,设置其为true可以维持http连接 false

          响应体参数

          响应体字段数据结构说明

          请求示例

          POST /v1/bucketName_example/objectKey_example?select&type=type_example
          <公共请求头>
          
          
          {
            "selectRequest" : {
              "outputSerialization" : {
                "outputHeader" : false,
                "csv" : {
                  "quoteFields" : "ALWAYS",
                  "recordDelimiter" : "Cg==",
                  "quoteCharacter" : "Ig==",
                  "fieldDelimiter" : "LA=="
                }
              },
              "expression" : "c2VsZWN0IGNvdW50KCopIGZyb20gbxkl2JqZWN0IHdoZXJlIF80ID4gNDU=",
              "expressionType" : "SQL",
              "requestProgress" : {
                "enabled" : false
              },
              "inputSerialization" : {
                "csv" : {
                  "fileHeaderInfo" : "NONE",
                  "recordDelimiter" : "\\r\\n",
                  "quoteCharacter" : "'",
                  "fieldDelimiter" : ";",
                  "commentCharacter" : "//"
                },
                "compressionType" : "NONE"
              }
            }
          }

          响应示例

          HTTP/1.1 200 OK
          <公共响应头>
          
          { }

          错误码

          请参考通用错误码

          上一篇
          基础操作
          下一篇
          权限控制