问题描述
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 qn6q**************:77Dv****************
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 qn6q**************:77Dv****************
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请求中指定的RecordDelimiter
和FieldDelimiter
与CreateSelectObjectMeta请求指定的参数不一致,导致请求报错。
解决方案
如果您希望指定查询文件的范围,您可以在XML中提供Range节点。使用Range参数查询文件时,需要包含Select Meta,且要求查询请求参数与Select Meta中的对应参数保持一致。更多信息,请参见CreateSelectObjectMeta。
参考ErrorMessage中提示的Select Meta各项参数的值对请求体XML进行调整。
相关文档
该文章对您有帮助吗?
- 本页导读 (1)
- 问题描述
- 问题原因
- 问题示例
- 解决方案
- 相关文档