文档

0016-00000837

更新时间:

问题描述

SelectObject请求查询范围内没有记录分隔符。

问题原因

您发起了SelectObject请求,并通过Range请求头或在请求体XML中的Range节点指定查询文件的内容范围,但是在该范围内没有找到记录分隔符(RecordDelimiter)。

问题示例

以下请求中指定的RecordDelimiter是Cg==,解码后为\n。如果在请求中指定的查询范围10-20字节内找不到该记录分隔符,则请求错误。

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

相关文档

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