History
Introduction
API Category
Making API Requests
Region APIs
Instance APIs
Cloud Hosting Cluster APIs
Image APIs
Instance Launch Template APIs
Placement Group APIs
Key APIs
Security Group APIs
Network APIs
Data Types
Error Codes
cos:GetObject的授权。POST /<ObjectKey>?select&select-type=2 HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: dateAuthorization: Auth StringRequest body
<?xml version="1.0" encoding="UTF-8"?><SelectRequest><Expression>Select * from COSObject</Expression><ExpressionType>SQL</ExpressionType><InputSerialization><CompressionType>GZIP</CompressionType><CSV><FileHeaderInfo>IGNORE</FileHeaderInfo><RecordDelimiter>\\n</RecordDelimiter><FieldDelimiter>,</FieldDelimiter><QuoteCharacter>"</QuoteCharacter><QuoteEscapeCharacter>"</QuoteEscapeCharacter><Comments>#</Comments><AllowQuotedRecordDelimiter>FALSE</AllowQuotedRecordDelimiter></CSV></InputSerialization><OutputSerialization><CSV><QuoteFields>ASNEEDED</QuoteFields><RecordDelimiter>\\n</RecordDelimiter><FieldDelimiter>,</FieldDelimiter><QuoteCharacter>"</QuoteCharacter><QuoteEscapeCharacter>"</QuoteEscapeCharacter></CSV></OutputSerialization><RequestProgress><Enabled>FALSE</Enabled></RequestProgress></SelectRequest>
<?xml version="1.0" encoding="UTF-8"?><SelectRequest><Expression>Select * from COSObject</Expression><ExpressionType>SQL</ExpressionType><InputSerialization><CompressionType>GZIP</CompressionType><JSON><Type>DOCUMENT</Type></JSON></InputSerialization><OutputSerialization><JSON><RecordDelimiter>\\n</RecordDelimiter></JSON></OutputSerialization><RequestProgress><Enabled>FALSE</Enabled></RequestProgress></SelectRequest>
<?xml version="1.0" encoding="UTF-8"?><SelectRequest><Expression>Select * from COSObject</Expression><ExpressionType>SQL</ExpressionType><InputSerialization><CompressionType>GZIP</CompressionType><Parquet></Parquet></InputSerialization><OutputSerialization><JSON><RecordDelimiter>\\n</RecordDelimiter></JSON></OutputSerialization><RequestProgress><Enabled>FALSE</Enabled></RequestProgress></SelectRequest>
名称 | 父节点 | 描述 | 类型 | 是否必选 |
Expression | SelectRequest | SQL 表达式,代表您需要发起的检索操作。例如 SELECT s._1 FROM COSObject s。这个表达式可以从 CSV 格式的对象中检索第一列内容。有关 SQL 表达式的详细介绍,请参见 Select 命令 | String | 是 |
ExpressionType | SelectRequest | 表达式类型,该项为扩展项,目前只支持 SQL 表达式,仅支持 SQL 参数 | String | 是 |
InputSerialization | SelectRequest | 描述待检索对象的格式 | Container | 是 |
OutputSerialization | SelectRequest | 描述检索结果的输出格式 | Container | 是 |
RequestProgress | SelectRequest | 是否需要返回查询进度 QueryProgress 信息,如果选中 COS Select 将周期性返回查询进度 | Container | 否 |
名称 | 父节点 | 描述 | 类型 | 是否必选 |
CompressionType | InputSerialization | 描述待检索对象的压缩格式: 如果对象未被压缩过,则该项为 NONE。如果对象被压缩过,COS Select 目前支持的两种压缩格式为 GZIP 和 BZIP2,可选项为 NONE、GZIP、BZIP2,默认值为 NONE | String | 否 |
CSV/JSON/PARQUET | InputSerialization | 描述在相应的对象格式下所需的文件参数。例如 CSV 格式需要指定分隔符 | Container | 是 |
名称 | 父节点 | 描述 | 类型 | 是否必选 |
RecordDelimiter | CSV | 将 CSV 对象中记录分隔为不同行的字符,默认您通过 \\n进行分隔。您可以指定任意8进制字符,如逗号、分号、Tab 等。该参数最多支持2个字节,即您可以输入\\r\\n这类格式的分隔符。默认值为\\n 。 | String | 否 |
FieldDelimiter | CSV | 指定分隔 CSV 对象中每一行的字符,默认您通过,进行分隔。您可以指定任意8进制字符,该参数最多支持1个字节。默认值为 , 。 | String | 否 |
QuoteCharacter | CSV | 如果您待检索的 CSV 对象中存在包含分隔符的字符串,您可以使用 QuoteCharacter 进行转义,避免该字符串被切割成几个部分。如 CSV 对象中存在 "a, b" 这个字符串,双引号"可以避免这一字符串被分隔成 a 和 b 两个字符。默认值为" 。 | String | 否 |
QuoteEscapeCharacter | CSV | 如果您待检索的字符串中已经存在 ",那您需要使用"进行转义以保证字符串可以正常转义。如您的字符串 """ a , b """将会被解析为" a , b "。默认值为 "。 | String | 否 |
AllowQuotedRecordDelimiter | CSV | 指定待检索对象中是否存在与分隔符相同且需要用 " 转义的字符。设定为 TRUE 时,COS Select 将会在检索进行转义,这会导致检索性能下降;设定为 FALSE 时,则不会做转义处理。默认值为 FALSE。 | Boolean | 否 |
FileHeaderInfo | CSV | 待检索对象中是否存在列表头。该参数为存在 NONE、USE、IGNORE 三个选项。NONE 代表对象中没有列表头,USE 代表对象中存在列表头并且您可以使用表头进行检索(例如 SELECT "name" FROM COSObject),IGNORE 代表对象中存在列表头且您不打算使用表头进行检索(但您仍然可以通过列索引进行检索,如 SELECT s._1 FROM COSObject s)。合法值为 NONE、USE、IGNORE。 | Enum | 否 |
Comments | CSV | 指定某行记录为注释行,该字符会被添加到该行记录的首字符。如果某一行记录被指定为注释,则 COS Select 将不对此行做任何分析。默认值为 #。 | String | 否 |
名称 | 父节点 | 描述 | 类型 | 是否必选 |
Type | JSON | JSON 文件的类型: DOCUMENT 表示 JSON 文件仅包含一个独立的 JSON 对象,且该对象可以被切割成多行 LINES 表示 JSON 对象中的每一行包含了一个独立的 JSON 对象 合法值为 DOCUMENT 、LINES | Enum | 是 |
名称 | 父节点 | 描述 | 类型 | 是否必选 |
CSV /JSON | OutputSerialization | 指定检索结果的输出格式,可选项为 CSV 或者 JSON | Container | 是,必须是 CSV 或者 JSON 中的一个 |
名称 | 父节点 | 描述 | 类型 | 是否必选 |
QuoteFields | CSV | 指定输出结果为文件时,是否需要使用 "进行转义。可选项包括 ALWAYS、ASNEEDED、ALWAYS 代表对所有本次输出的检索文件应用",ASNEEDED 代表仅在需要时使用。合法值为 ALWAYS、ASNEEDED,默认值为 ASNEEDED。 | String | 是 |
RecordDelimiter | CSV | 将输出结果中的记录分隔为不同行的字符,默认通过 \\n 进行分隔。您可以指定任意8进制字符,如逗号、分号、Tab 等。该参数最多支持2个字节,即您可以输入\\r\\n这类格式的分隔符。默认值为\\n 。 | String | 否 |
FieldDelimiter | CSV | 将输出结果中的每一行进行分列的字符,默认通过 ,进行分隔。您可以指定任意8进制字符,该参数最多支持1个字节。默认值为, 。 | String | 否 |
QuoteCharacter | CSV | 如果输出结果中存在包含分隔符的字符串,可以使用 QuoteCharacter 进行转义,保证该字符串不会在后续分析中被切割。如输出结果中存在 a,b这个字符串,双引号"可以避免这一字符串被分隔成a和b两个字符,COS Select 将会将其转为"a, b" 写入文件。默认值为" 。 | String | 否 |
QuoteEscapeCharacter | CSV | 如果您即将输出的字符串中已经存在 ",那您需要使用"进行转义以保证该字符串可以正常转义。如您的字符串" a , b" 将会被在写入文件时被转换为""" a , b """。默认值为 "。 | String | 否 |
名称 | 父节点 | 描述 | 类型 | 是否必选 |
RecordDelimiter | JSON | 将输出结果中的记录分隔为不同行的字符,默认通过 \\n 进行分隔。您可以指定任意8进制字符,如逗号、分号、Tab 等。该参数最多支持2个字节,即您可以输入\\r\\n这类格式的分隔符。默认值为\\n | String | 否 |
名称 | 父节点 | 描述 | 类型 | 是否必选 |
Enabled | RequestProgress | 指定是否需要 COS Select 定期返回查询进度。默认值为 FALSE | Boolean | 否 |
200 OK状态码。<Message 1><Message 2><Message 3>......<Message n>

响应体总长度 = 预响应长度 + 预响应校验码长度 + 响应正文长度 + 响应报头长度 + 响应正文校验码长度
响应体总长度 = 响应正文长度 + 响应报头长度 + 16
组成 | 描述 |
预响应 prelude | 分别记录了分块 Message 的总长度和所有报头的总长度,每个记录4字节,总长8字节: 1. total byte-length:所在分块 Message 的总长度,使用大端编码,包含该记录本身容量共4字节。 2. headers byte-length:所有报头的总长度,使用大端编码,不包含该记录所占空间共4字节。 |
预响应校验码 prelude CRC | 预响应的 CRC 校验码,使用大端编码,总共4字节。预响应校验码可以帮助程序快速识别预响应信息是否正确,减少缓冲时的阻塞。 |
报头信息 header | 分块 Message 记录的检索结果的元数据信息,诸如数据类型,正文格式。根据数据类型的差异,本部分的字节长度也有所差异。响应报头以 kv 键值对形式存储,使用 UTF-8编码。响应报头中所记录的元数据信息可以以任意顺序展示,但每一项元数据仅记录一次。根据数据类型的差异,以下响应报头均有可能在 COS Select 返回的结果中出现:、 1. MessageType Header:该报头代表响应类型。Key 值为":message-type",合法的 Value 值为"error"或者"event","error"代表本条记录为报错信息,"event"代表本条记录为具体的事件。 2. EventType Header:该报头记录事件类型。Key 值为":event-type",合法的 Value 值为"Records","Cont","Progress","Stats"或"End"。"Records"代表事件为返回检索记录,"Cont"代表事件为保持 TCP 连接,"Progress"代表事件为定期返回的检索结果,"Stats"代表事件为本次查询的统计信息,"End"代表本次查询结束。3. ErrorCode Header:该报头记录报错类型。Key 值为":error-code",合法的 Value 值为 特殊错误码 中的错误码信息。4. ErrorMessage Header:该报头记录错误码信息。Key 值为":error-message",合法的 Value 值为服务端返回的错误码信息,可用于定位错误。 |
响应正文 Payload | 记录检索结果,或者与请求相关的正式信息。 |
正文校验码 Message CRC | 使用大端编码的 CRC 校验码,总长4字节。 |
组成 | 描述 |
Header Name Byte-Length | 记录 Header Name 的字节长度信息 |
Header Name | 报头类型,合法值包括 ":message-type", ":event-type", ":error-code"和":error-message" ":message-type"代表该报头记录了响应类型 ":event-type"代表了该报头记录事件类型 ":error-code"代表该报头记录报错类型 ":error-message"代表该报头记录错误码信息 |
Header Value Type | Header Value 的类型,对于 COS Select 而言这个值固定为7,代表类型为 String |
Value String Byte-Length | Header Value 的字节长度信息,固定2字节 |
Header Value String | 响应报头的正文,即响应正文的元数据信息,Header Value 的字节长度与响应类型相关 |
响应类型 | 描述 |
Records message | 检索信息,可以包含单条记录,部分记录或者多条记录,取决于检索结果的多少。一个响应体中可能包含多个 Records message |
Continuation message | 连接信息,COS Select 周期性地发送这些信息以保持 TCP 连接,这些信息随机出现在响应体中。客户端最好能够自动识别这类信息,并对其做过滤处理以免弄脏检索结果 |
Progress message | 进度信息,COS Select 周期性地返回这些信息以反馈当前查询进度 |
Stats message | 统计信息,COS Select 在查询结束后返回本次查询的相关统计信息 |
End message | 结束信息,代表本次查询已经结束,没有后续响应数据。只有在接受到该类型的信息时才能认为查询结束 |
RequestLevelError message | 报错信息,COS Select 在查询出现错误时将会返回这一信息,包含请求的错误原因。如果 COS Select 返回了这一信息,则将不会再返回 End message 信息 |



<?xml version="1.0" encoding="UTF-8"?><Progress><BytesScanned>512</BytesScanned><BytesProcessed>1024</BytesProcessed><BytesReturned>1024</BytesReturned></Progress>

<?xml version="1.0" encoding="UTF-8"?><Stats><BytesScanned>512</BytesScanned><BytesProcessed>1024</BytesProcessed><BytesReturned>1024</BytesReturned></Stats>


错误码 | 错误信息 | 含义 | HTTP 状态码 |
InvalidXML | The XML is invalid | XML 格式不合法 | 400 Bad Request |
MissingRequiredParameter | The SelectRequest entity is missing a required parameter | 检索请求缺少必填参数项 | 400 Bad Request |
MissingExpectedExpression | The SQL expression is missing | 缺少 SQL 表达式 | 400 Bad Request |
MissingInputSerialization | The input serialization is missing | 未指定输入 CSV 对象的数据序列化格式 | 400 Bad Request |
InvalidCompressionFormat | The file is not in a supported compression format. Only GZIP and BZIP2 are supported | 不合法的文件压缩格式,仅支持 GZIP 和 BZIP2 两种格式 | 400 Bad Request |
MissingInputFormat | The input format is missing | 缺少输入格式 | 400 Bad Request |
InvalidFileHeaderInfo | The input FileHeaderInfo is invalid. Only NONE, USE, and IGNORE are supported | 输入的文件表头信息不合法。仅支持 NONE,USE 和 IGNORE | 400 Bad Request |
InvalidRequestParameter | The input RecordDelimiter of CSV is invalid | 输入的 CSV 文件换行符不合法 | 400 Bad Request |
InvalidRequestParameter | The input FieldDelimiter of CSV is invalid | 输入的 CSV 文件列分隔符不合法 | 400 Bad Request |
InvalidRequestParameter | The input QuoteCharacter of CSV is invalid | 输入的 CSV 文件引用符不合法 | 400 Bad Request |
InvalidRequestParameter | The input AllowQuoteRecordDelimiter of csv is invalid. Only TRUE and FALSE are supported | 在输入 CSV 文件中启用转义符的配置不合法,仅支持 TRUE 和 FALSE | 400 Bad Request |
InvalidJsonType | The JsonType is invalid. Only DOCUMENT and LINES are supported | 不合法的 JSON 类型,仅支持 DOCUMENT 和 LINES | 400 Bad Request |
MissingOutputSerialization | The output serialization is missing. | 未指定输出 CSV 对象的数据序列格式 | 400 Bad Request |
MissingOutputFormat | The output format is missing | 缺少输出格式 | 400 Bad Request |
InvalidQuoteFields | The QuoteFields is invalid. Only ALWAYS and ASNEEDED are supported | 不合法的转义规则,仅支持 ALWAYS 和 ASNEEDED | 400 Bad Request |
InvalidRequestParameter | The output RecordDelimiter of CSV is invalid | 输出的 CSV 文件换行符不合法 | 400 Bad Request |
InvalidRequestParameter | The output FieldDelimiter of CSV is invalid | 输出的 CSV 文件列分隔符不合法 | 400 Bad Request |
InvalidRequestParameter | The output QuoteCharacter of CSV is invalid | 输出的 CSV 文件转义符不合法 | 400 Bad Request |
InvalidRequestParameter | The output QuoteEscapeCharacter of CSV is invalid | 输出的 CSV 的双引号转义符不合法 | 400 Bad Request |
InvalidRequestParameter | The output RecordDelimiter of JSON is invalid | 输出的 JSON 文件换行符不合法 | 400 Bad Request |
SQLParsingError | Encountered an error parsing the SQL expression | 解析 SQL 表达式出现问题 | 400 Bad Request |
SQLParsingError | Other expressions are not allowed in the SELECT list when '*' is used without dot notation. | SELECT list 不允许在未使用点符的时候使用 '*' | 400 Bad Request |
SQLParsingError | The SQL expression contains an empty SELECT | SQL 表达式中包含了空的 SELECT 子句 | 400 Bad Request |
SQLParsingError | GROUP is not supported in the SQL expression | SQL 表达式中不支持 GROUP 子句 | 400 Bad Request |
SQLParsingError | UNION is not supported in the SQL expression | SQL 表达式中不支持 UNION 子句 | 400 Bad Request |
SQLParsingError | FROM is missing in the SQL expression | SQL 表达式中缺少 FROM 子句 | 400 Bad Request |
SQLParsingError | ORDER is not supported in the SQL expression | SQL 表达式中不支持 ORDER 子句 | 400 Bad Request |
SQLParsingError | The column index is invalid in the SQL expression | SQL 表达式中指定的列索引不合法 | 400 Bad Request |
SQLParsingError | The table alias is invalid in WHERE | WHERE 子句中的表别名不合法 | 400 Bad Request |
Bzip2DecompressError | Encountered an error decompressing the bzip2 file | 解压 BZIP2 格式的文件时出现问题 | 400 Bad Request |
Bzip2DecompressError | BZIP2 is not applicable to the queried object | BZIP2 格式不适用于解压待查询对象 | 400 Bad Request |
GzipDecompressError | Encountered an error decompressing the gzip file | 解压 GZIP 格式的文件时出现问题 | 400 Bad Request |
GzipDecompressError | GZIP is not applicable to the queried object | GZIP 格式不适用于解压待查询对象 | 400 Bad Request |
Busy | The service is busy. Please retry later | 后端服务阻塞,请稍后重试 | 400 Bad Request |
Overload | The service is overload. Please retry later | 后端服务过载,请稍后重试 | 400 Bad Request |
AmbiguousFieldName | Field name matches to multiple fields in the file | 指定的表头名称存在多个相同的值 | 400 Bad Request |
ComparisonFailed | Attempt to compare failed | 匹配失败,请重试 | 400 Bad Request |
CastFailed | Attempt to convert from one data type to another using CAST failed in the SQL expression. | 在 SQL 表达式中通过 CAST 函数转换数据类型时出现错误 | 400 Bad Request |
OverMaxRecordSize | The length of a record in the input or result is greater than maxCharsPerRecord of 1 MB | 输入或输出的文件中,单行记录大小超过1MB限制 | 400 Bad Request |
LastRecordParseFail | Please check the last record in the input | 请检查输入文件的最后一行记录 | 400 Bad Request |
CSVParsingError | Encountered an error parsing the CSV file | 解析 CSV 格式文件的时候出现问题 | 400 Bad Request |
JSONParsingError | Encountered an error parsing the JSON file | 解析 JSON 格式文件的时候出现问题 | 400 Bad Request |
ErrorWritingRow | Encountered an error parsing the SELECT result. Please try again | 无法格式化您的查询结果,请检查文件并重试 | 400 Bad Request |
InvalidRequestParameter | The input Comment of CSV is invalid | 不合法的 CSV 文件注释符 | 400 Bad Request |
InvalidTextEncoding | UTF-8 encoding is required. Please check the file and try again. | 检索文件和检索结果仅支持UTF-8编码 | 400 Bad Request |
NoSuchKey | The specified key does not exist | 指定的对象键不存在 | 404 Not Found |
AccessDenied | Access Denied | 签名或者权限不正确,拒绝访问 | 403 Forbidden |
MethodNotAllowed | The specified method is not allowed against this resource | 当前资源不支持该 HTTP 方法 | 405 Method Not Allowed |
InternalError | We encountered an internal error. Please try again | 服务端内部错误 | 500 Internal Server |
exampleobject.csv,该对象存储于北京地域(ap-beijing)的存储桶 examplebucket-1250000000 中。POST /exampleobject.csv?select&select-type=2 HTTP/1.1Host: examplebucket-1250000000.cos.ap-beijing.myqcloud.comDate: Tue, 12 Jan 2019 11:49:52 GMTAuthorization: authorization stringContent-Length: content length<?xml version="1.0" encoding="UTF-8"?><SelectRequest><Expression>Select * from COSObject</Expression><ExpressionType>SQL</ExpressionType><InputSerialization><CompressionType>None</CompressionType><CSV><FileHeaderInfo>IGNORE</FileHeaderInfo><RecordDelimiter>\\n</RecordDelimiter><FieldDelimiter>,</FieldDelimiter><QuoteCharacter>"</QuoteCharacter><QuoteEscapeCharacter>"</QuoteEscapeCharacter><Comments>#</Comments></CSV></InputSerialization><OutputSerialization><CSV><QuoteFields>ASNEEDED</QuoteFields><RecordDelimiter>\\n</RecordDelimiter><FieldDelimiter>,</FieldDelimiter><QuoteCharacter>"</QuoteCharacter><QuoteEscapeCharacter>"</QuoteEscapeCharacter></CSV></OutputSerialization></SelectRequest>
s._n筛选第n列的数据,n最小为1。如下指令将从对象中筛选第3列数值大于100的记录,并返回这些记录的第1和第2列: SELECT s._1, s._2 FROM COSObject s WHERE s._3 > 100
FileHeaderInfo设置为Use),您可以使用s.name进行索引,如下指令将从对象中筛选表头名为Id和FirstName的对象:SELECT s.Id, s.FirstName FROM COSObject s
SELECT count(*) FROM COSObject s WHERE s._1 < 1
HTTP/1.1 200 OKx-cos-id-2: cos_id_demox-cos-request-id: cos_request_id_demoDate: Tue, 12 Jan 2019 11:50:29 GMTA series of messages
exampleobject.json,该对象存储于北京地域(ap-beijing)的存储桶 examplebucket-1250000000 中。POST /exampleobject.json?select&select-type=2 HTTP/1.1Host: examplebucket-1250000000.cos.ap-beijing.myqcloud.comDate: Tue, 12 Jan 2019 11:52:29 GMTAuthorization: authorization stringContent-Length: content length<?xml version="1.0" encoding="UTF-8"?><SelectRequest><Expression>Select * from COSObject</Expression><ExpressionType>SQL</ExpressionType><InputSerialization><CompressionType>NONE</CompressionType><JSON><Type>DOCUMENT</Type></JSON></InputSerialization><OutputSerialization><CSV><QuoteFields>ASNEEDED</QuoteFields><RecordDelimiter>\\n</RecordDelimiter><FieldDelimiter>,</FieldDelimiter><QuoteCharacter>"</QuoteCharacter><QuoteEscapeCharacter>"</QuoteEscapeCharacter></CSV></OutputSerialization></SelectRequest>
city数值为 Seattle 的记录,并返回这些记录的country和city信息:SELECT s.country, s.city from COSObject s where s.city = 'Seattle'
SELECT count(*) FROM COSObject s
文档反馈