CreateSelectObjectMeta API用於擷取目標檔案總的行數,總的列數(對於CSV檔案),以及Split個數(每一個Object分成多個資料區塊,每個資料區塊對應一個Split,每個Split由連續的行組成)。如果該資訊不存在,則會掃描整個檔案,分析並記錄下CSV檔案的上述資訊。重複調用該API則會儲存上述資訊而不必重新掃描整個檔案。
注意事項
CreateSelectObjectMeta操作要求您對該Object有寫入權限。
如果該API執行正確,返回200。如果目標檔案不是合法CSV或者JSON LINES檔案,或者指定的CSV分隔字元和目標CSV不匹配,則返回400。
請求文法
請求文法分為 CSV 和 JSON 兩種格式。
請求文法(CSV)
POST /samplecsv?x-oss-process=csv/meta <CsvMetaRequest> <InputSerialization> <CompressionType>None</CompressionType> <CSV> <RecordDelimiter>base64 encode的字元</RecordDelimiter> <FieldDelimiter>base64 encode的字元</FieldDelimiter> <QuoteCharacter>base64 encode的字元</QuoteCharacter> </CSV> </InputSerialization> <OverwriteIfExists>false|true</OverwriteIfExists> </CsvMetaRequest>
請求文法(JSON)
POST /samplecsv?x-oss-process=json/meta <JsonMetaRequest> <InputSerialization> <CompressionType>None</CompressionType> <JSON> <Type>LINES</Type> </JSON> </InputSerialization> <OverwriteIfExists>false|true</OverwriteIfExists> </JsonMetaRequest>
請求元素
名稱 | 類型 | 描述 |
CsvMetaRequest | 容器 | 儲存建立Select csv Meta請求的容器。 子節點:InputSerialization 父節點:None |
JsonMetaRequest | 容器 | 儲存建立 Select json meta請求的容器。 子節點:InputSerialization 父節點:None |
InputSerialization | 容器 | 輸入序列化參數(可選) 子節點:CompressionType、 CSV、JSON 父節點:CsvMetaRequest、JsonMetaRequest |
OverwriteIfExists | bool | 重新計算SelectMeta,覆蓋已有資料。(可選,預設是false,即如果Select Meta已存在則直接返回) 子節點:None 父節點:CsvMetaRequest、JsonMetaRequest |
CompressionType | 枚舉 | 指定檔案壓縮類型(可選)。目前不支援任何壓縮,故只能為None。 子節點: None 父節點:InputSerialization |
RecordDelimiter | 字串 | 指定CSV分行符號,以Base64編碼。預設值為’\n’(可選)。未編碼前的值最多為兩個字元,以字元的ANSI值表示,例如在Java裡用\n表示換行。 子節點:None 父節點:CSV |
FieldDelimiter | 字串 | 指定CSV資料行分隔符號,以Base64編碼。預設值為 未編碼前的值必須為一個字元,以字元的ANSI值表示,例如Java裡用 子節點:None 父節點:CSV (輸入,輸出) |
QuoteCharacter | 字串 | 指定CSV的引號字元,以Base64編碼。預設值為\”(可選)。在CSV中引號內的分行符號,資料行分隔符號將被視作一般字元。未編碼前的值必須為一個字元,以字元的ANSI值表示,例如Java裡用\”表示引號。 子節點:None 父節點:CSV (輸入) |
CSV | 容器 | 指定CSV輸入格式。 子節點:RecordDelimiter,FieldDelimiter,QuoteCharacter 父節點:InputSerialization |
JSON | 容器 | 指定JSON輸入格式。 子節點:Type 父節點:InputSerialization |
Type | 枚舉 | 指定JSON類型。 合法值 :LINES |
回應標頭
和SelectObject 類似,CreateSelectObjectMeta API也以Frame的形式返回。
名稱 | Frame-Type值 | Payload格式 | 描述 |
Meta End Frame(Csv) | 8388614 | offset | total scanned bytes | status| splits count | rows count | columns count | error message <-8 bytes><------8 bytes------><--4bytes><--4 bytes--><--8 bytes><--4 bytes---><variable size> | 用來彙報CreateSelectObjectMeta API最終的狀態。
|
Meta End Frame(Json) | 8388615 | offset | total scanned bytes | status| splits count | rows count | error message <-8 bytes><------8 bytes------><--4bytes><--4 bytes--><--8 bytes><variable size> | 用來彙報CreateSelectObjectMeta API最終的狀態。
|
範例請求
範例請求分為 CSV 和 JSON 兩種格式。
範例請求(CSV)
POST /oss-select/bigcsv_normal.csv?x-oss-process=csv%2Fmeta HTTP/1.1 Date: Fri, 25 May 2018 23:06:41 GMT Content-Type: Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e User-Agent: aliyun-sdk-dotnet/2.8.0.0(windows 16.7/16.7.0.0/x86;4.0.30319.42000) Content-Length: 309 Expect: 100-continue Connection: keep-alive Host: Host <?xml version="1.0"?> <CsvMetaRequest> <InputSerialization> <CSV> <RecordDelimiter>Cg==</RecordDelimiter> <FieldDelimiter>LA==</FieldDelimiter> <QuoteCharacter>Ig==</QuoteCharacter> </CSV> </InputSerialization> <OverwriteIfExisting>false</OverwriteIfExisting> </CsvMetaRequest>範例請求(JSON)
POST /oss-select/sample.json?x-oss-process=json%2Fmeta HTTP/1.1 Date: Fri, 25 May 2018 23:06:41 GMT Content-Type: Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e User-Agent: aliyun-sdk-dotnet/2.8.0.0(windows 16.7/16.7.0.0/x86;4.0.30319.42000) Content-Length: 309 Expect: 100-continue Connection: keep-alive Host: Host <?xml version="1.0"?> <JsonMetaRequest> <InputSerialization> <JSON> <Type>LINES</Type> </JSON> </InputSerialization> <OverwriteIfExisting>false</OverwriteIfExisting> </JsonMetaRequest>
命令列工具ossutil
CreateSelectObjectMeta介面所對應的ossutil命令,請參見create-select-object-meta。