0016-00000820

问题描述

SelectObject请求体XML中添加了Range节点,但是目标文件缺少CSV Meta或者Json Meta。

问题原因

您发起了SelectObject请求,并在请求体XML中通过Range节点设置了待查询的文件内容范围,但是查询的目标文件未包含CSV Meta或者Json Meta。

问题示例

以下请求示例中缺少CSV Meta。

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 qn6q**************:77Dv****************
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>

解决方案

使用Range参数查询文件时,需要包含select meta。

POST  /samplecsv?x-oss-process=csv/meta
Date: Fri, 25 May 2018 22:11:39 GMT
Authorization: OSS qn6q**************:77Dv****************
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
<CsvMetaRequest>
    <InputSerialization>
        <CompressionType>None</CompressionType>
        <CSV>
            <RecordDelimiter>base64 encode的字符</RecordDelimiter>
            <FieldDelimiter>base64 encode的字符</FieldDelimiter>
            <QuoteCharacter>base64 encode的字符</QuoteCharacter>
        </CSV>
    </InputSerialization>
    <OverwriteIfExists>false|true</OverwriteIfExists>
</CsvMetaRequest>

更多信息,请参见CreateSelectObjectMeta

相关文档