向Object执行Sql语句 接口说明
此接口用于向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定时返回给用户
参数名称
参数类型
是否必须
描述
示例值
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
<公共响应头>
{ }
错误码
请参考通用错误码