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最终的状态。
|
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: 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