問題の説明
Range要素はSelectObjectリクエストのXML構造で設定されますが、ターゲットオブジェクトのSelectMetaはリクエストのXML構造で設定されたSelectMetaと一致しません。
原因
SelectObjectリクエストを開始し、リクエストのXML構造のrange要素を使用して、クエリするオブジェクトの範囲を指定しました。 ただし、クエリされたオブジェクトのSelectMetaは、リクエストで指定されたものと一致しません。 たとえば、SelectMetaはRecordDelimiter要素またはQuoteCharacter要素の値と一致しません。
例
たとえば、CreateSelectObjectMetaリクエストを開始してSelectMetaを作成します。
POST /samplecsv?x-oss-process=csv/meta
Date: Fri, 25 May 2018 22:11:39 GMT
Authorization: OSS LTAI****************: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 LTAI****************: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要素を使用してオブジェクトをクエリする場合は、リクエストにSelectMetaを含める必要があります。リクエストのパラメーターは、SelectMetaの対応するパラメーターと一致している必要があります。 詳細は、「SelectObject」をご参照ください。
エラーメッセージで返されたSelect Metaパラメーターの値に基づいて、リクエストのXML構造を調整します。