全部產品
Search
文件中心

Object Storage Service:CreateSelectObjectMeta

更新時間:Apr 26, 2025

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最終的狀態。

  • offset:8位整數,掃描結束時的檔案位移。

  • total scanned bytes:8位整數,最終掃描過的資料大小。

  • status:4位整數,最終的status。

  • splits_count:4位整數,總split個數。

  • rows_count:8位整數,總行數。

  • cols_count:4位整數,總列數。

  • error_message:詳細的錯誤資訊。若無錯誤,則error_message為空白。

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最終的狀態。

  • offset:8位整數,掃描結束時的檔案位移。

  • total scanned bytes:8位整數,最終掃描過的資料大小。

  • status:4位整數,最終的status。

  • splits_count:4位整數,總split個數。

  • rows_count:8位整數,總行數。

  • error_message:詳細的錯誤資訊。若無錯誤,則error_message為空白。

範例請求

範例請求分為 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