文档

0016-00000817

更新时间:

问题描述

SelectObject请求XML中Range节点取值有误。

问题原因

您发起了SelectObject请求,并在请求体XML中通过<Range>设置的查询文件内容范围不正确。

问题示例

以下请求中通过<Range>节点指定了文件内容查询范围,但是Range参数中指定的结束值20小于起始值100,取值不合法导致请求错误。

POST /oss-select/bigcsv_normal.csv?x-oss-process=csv%2Fselect HTTP/1.1
Date: Fri, 25 May 2018 22:11:39 GMT
Authorization: OSS LTAIJPLocA0fD:FC/9JRbBGRw4o2QqdaL246Px****
Host: BucketName.oss-cn-hangzhou.aliyuncs.com 
<?xml version="1.0"?>
<SelectRequest>
    <Expression>c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=
    </Expression>
    <InputSerialization>
         <CSV>
         		<Range>line-range=100-20</Range>
            <AllowQuotedRecordDelimiter>false</AllowQuotedRecordDelimiter>
         </CSV>
    </InputSerialization>
    <OutputSerialization>
        ......
    </OutputSerialization>
</SelectRequest>

解决方案

如果您希望指定查询文件的范围,您需要在XML中提供Range节点,该节点支持以下两种格式:

  • 按行查询:line-range=start-end。例如,line-range=10-20表示扫描第10行到第20行。

  • 按Split查询:split-range=start-end。例如,split-range=10-20表示扫描第10到第20个split。

其中start和end均为inclusive。该节点仅在文件为CSV格式或者JSON类型为LINES时使用。

POST /oss-select/bigcsv_normal.csv?x-oss-process=csv%2Fselect HTTP/1.1
Date: Fri, 25 May 2018 22:11:39 GMT
Authorization: OSS LTAIJPLocA0fD:FC/9JRbBGRw4o2QqdaL246Px****
Host: BucketName.oss-cn-hangzhou.aliyuncs.com 
<?xml version="1.0"?>
<SelectRequest>
    <Expression>c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=
    </Expression>
    <InputSerialization>
         <CSV>
         		<Range>line-range=10-20</Range>
         </CSV>
    </InputSerialization>
    <OutputSerialization>
        ......
    </OutputSerialization>
</SelectRequest>

相关文档

  • 本页导读 (1)
文档反馈