文档

0016-00000836

更新时间:

问题描述

SelectObject请求体XML中设置了Range标签,但是目标文件的Select元数据与请求体XML中设置的元数据不匹配。

问题原因

您发起了SelectObject请求,并在请求体XML中通过<Range>设置了要查询的文件内容范围,但是查询的目标文件对应的Select Meta与您请求中的参数不匹配。例如RecordDelimiter不匹配或者QuoteCharacter不匹配。

问题示例

例如,您通过CreateSelectObjectMeta请求新建Select Meta。

POST  /samplecsv?x-oss-process=csv/meta
Date: Fri, 25 May 2018 22:11:39 GMT
Authorization: OSS LTAIJPLocA0fD:FC/9JRbBGRw4o2QqdaL246Px****
Host: host name
<CsvMetaRequest>
    <InputSerialization>
        <CompressionType>None</CompressionType>
        <CSV>
            <RecordDelimiter>LA==</RecordDelimiter>
            <FieldDelimiter>Cg==</FieldDelimiter>
            <QuoteCharacter>Ig==</QuoteCharacter>
        </CSV>
    </InputSerialization>
    <OverwriteIfExists>true</OverwriteIfExists>
</CsvMetaRequest>

然后,通过SelectObject发起如下查询请求。

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: host name
<?xml version="1.0"?>
<SelectRequest>
    <Expression>c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=
    </Expression>
    <InputSerialization>
        <CSV>
        		<Range>line-range=10-20</Range>
            <FileHeaderInfo>Ignore</FileHeaderInfo>
            <RecordDelimiter>Cg==</RecordDelimiter>
            <FieldDelimiter>LA==</FieldDelimiter>
            <QuoteCharacter>Ig==</QuoteCharacter>
        </CSV>
    </InputSerialization>
    <OutputSerialization>
        ......
    </OutputSerialization>
</SelectRequest>

SelectObject请求中指定的RecordDelimiterFieldDelimiter与CreateSelectObjectMeta请求指定的参数不一致,导致请求报错。

解决方案

  • 如果您希望指定查询文件的范围,您可以在XML中提供Range节点。使用Range参数查询文件时,需要包含Select Meta,且要求查询请求参数与Select Meta中的对应参数保持一致。更多信息,请参见CreateSelectObjectMeta

  • 参考ErrorMessage中提示的Select Meta各项参数的值对请求体XML进行调整。

相关文档

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