向Object执行Sql语句
更新时间:2021-12-29
接口说明
此接口用于向Bucket中指定object执行SQL语句,选取出指定内容返回。请求者必须对选取的object具有read权限。在SelectObject前需要确保对应的Bucket和Object已经存在,详细信息参考 SelectObject 开发者文档。
message具体格式详细说明:
- prelude部分一共8个byte,前4byte表示message总长度,后4byte表示headers部分总长度,
chunk总长度(prelude前4byte存储的值) - header总长度 - 8byte的prelude - 4byte的crc32 = payload部分数据总长度
;crc32表示整个message的纠删码- headers包含以下自定义<key,value>:“message-type”: {"Records", "Cont", "End"} ; "error-code": 具体错误码 ; "error-message": "详细错误信息"
- 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 |
响应体参数
响应体字段数据结构说明
请求示例
JSON
1POST /v1/bucketName_example/objectKey_example?select&type=type_example
2<公共请求头>
3
4
5{
6 "selectRequest" : {
7 "outputSerialization" : {
8 "outputHeader" : false,
9 "csv" : {
10 "quoteFields" : "ALWAYS",
11 "recordDelimiter" : "Cg==",
12 "quoteCharacter" : "Ig==",
13 "fieldDelimiter" : "LA=="
14 }
15 },
16 "expression" : "c2VsZWN0IGNvdW50KCopIGZyb20gbxkl2JqZWN0IHdoZXJlIF80ID4gNDU=",
17 "expressionType" : "SQL",
18 "requestProgress" : {
19 "enabled" : false
20 },
21 "inputSerialization" : {
22 "csv" : {
23 "fileHeaderInfo" : "NONE",
24 "recordDelimiter" : "\\r\\n",
25 "quoteCharacter" : "'",
26 "fieldDelimiter" : ";",
27 "commentCharacter" : "//"
28 },
29 "compressionType" : "NONE"
30 }
31 }
32}
响应示例
JSON
1HTTP/1.1 200 OK
2<公共响应头>
3
4{ }
错误码
请参考通用错误码