CreateSelectObjectMeta

更新时间:2025-04-08 01:39:30

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格式

描述

名称

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: OSS qn6q**************:77Dv****************
    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: OSS qn6q**************:77Dv****************
    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

  • 本页导读
  • 注意事项
  • 请求语法
  • 请求元素
  • 响应头
  • 样例请求
  • 命令行工具ossutil
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等