問題描述
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 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>
解決方案
您可以選擇以下任意方式指定查詢檔案的範圍。
在請求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 qn6q**************:77Dv**************** 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 qn6q**************:77Dv**************** 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>