文档

0016-00000816

更新时间:

问题描述

SelectObject请求中同时存在Range请求头和请求体XML中的Range节点。

问题原因

您发起了SelectObject请求,在请求头中设置了Range请求头,同时还在请求体XML中通过<Range>设置了要查询的文件内容范围。该接口不支持同时指定Range请求头和<Range>节点。

问题示例

SelectObject请求中指定了Range请求头,同时通过<Range>节点指定了查询范围。

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****
Range: bytes=1024-2048
Host: BucketName.oss-cn-hangzhou.aliyuncs.com 
<?xml version="1.0"?>
<SelectRequest>
    <Expression>c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=
    </Expression>
    <InputSerialization>
         <CSV>
         		<Range>line-range=10-20</Range>
            <AllowQuotedRecordDelimiter>false</AllowQuotedRecordDelimiter>
         </CSV>
    </InputSerialization>
    <OutputSerialization>
        ......
    </OutputSerialization>
</SelectRequest>

解决方案

您可以选择以下任意方式指定查询文件的范围。

  • 在请求XML中提供Range节点。

    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>

    使用Range参数查询文件时,需要包含select meta。更多信息,请参见CreateSelectObjectMeta

  • 添加Range请求头。

    当您查询的目标对象类型为CSV,可以通过AllowQuotedRecordDelimiter参数指定CSV内容是否包含引号中的换行符。当AllowQuotedRecordDelimiter参数取值为false时,SelectObject支持添加Range请求头,实现更高效的分片查询。

    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 
    Range: bytes=1024-2048
    <?xml version="1.0"?>
    <SelectRequest>
        <Expression>c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=
        </Expression>
        <InputSerialization>
             <CSV>
             		<AllowQuotedRecordDelimiter>false</AllowQuotedRecordDelimiter>
             </CSV>
        </InputSerialization>
        <OutputSerialization>
            ......
        </OutputSerialization>
    </SelectRequest>

相关文档

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