中文文档

mc sql

语法

mc sql 命令为指定的 MinIO 部署中的对象提供了一个 S3 选择接口,用于执行 SQL 查询。

有关 S3 Select 行为和限制的更多信息,请参阅 从对象中选择内容 。

以下命令查询在 myminio MinIO 部署上的 mydata 桶中的所有对象:

mc sql --recursive --query "select * from S3Object" myminio/mydata

该命令具有以下语法:

mc [GLOBALFLAGS] mc sql                          \
                 --query "string"                \
                 [--csv-input "string"]          \
                 [--compression "string"]        \
                 [--csv-output "string"]         \
                 [--csv-output-header "string"]  \
                 [--enc-c "string"]              \
                 [--json-input "string"]         \
                 [--json-output "string"]        \
                 [--recursive]                   \
                 ALIAS
  • 方括号 [] 表示可选参数。

  • 参数在同一行表示它们是相互依赖的。

  • 使用管道 | 运算符分隔的参数是相互排斥的。

在终端/壳中运行命令之前,将示例复制到文本编辑器中并按需进行修改。

参数

ALIAS
Required

要运行 SQL 查询的对账单或对象的完整路径。 指定配置好的 S3 服务的 alias 作为 ALIAS 路径的前缀。 例如:

mc sql [FLAGS] play/mybucket
--query, e
Required

要在指定的 ALIAS 目录或对象上执行的 SQL 语句。 将整个 SQL 查询用将整个 SQL 查询用双引号 " 括起来。

默认为 select * from S3Object 。

--csv-input
Optional

对于 .csv 输入对象的数据显示格式。 指定一个由逗号分隔的 key=value,... 字符串。 有关有效键的更多信息,请参见 CSV 格式字段。

--compression
Optional

输入对象的压缩类型。 指定以下支持的值之一:

  • GZIP

  • BZIP2

  • NONE (default)

MinIO 后端支持的压缩方案只有:

--csv-output
Optional

.csv 输出的数据格式。 指定一个由逗号分隔的 key=value,... 字符串。 请参见 CSV 格式字段 以获取有关有效键的更多信息。

请参阅 S3 API CSVOutput 以获取更多信息。

--csv-output-header
Optional

.csv 输出文件的标题行。 指定一个由逗号分隔的字段字符串,如 field1,field2,... 。

省略此选项将输出一个没有头行的 .csv 文件。

--enc-c
Optional

使用服务器端 SSE-C 加密 和客户端管理的密钥加密或解密对象。

该参数接受键值对,格式为 KEY=VALUE 。

KEY

对象的完整路径,即 alias/bucket/path/object.ext 。

您可以只指定顶层路径,以便对该路径中的所有操作使用单个加密密钥。

VALUE

指定用于 SSE-C 加密的 32 字节 RawBase64 编码密钥 或 64 字节十六进制编码密钥。

原始 Base64 编码 拒绝 = 填充键。 省略填充或使用支持 RAW 格式的 Base64 编码器。

  • KEY - 对象的完整路径为 alias/bucket/path/object 。

  • VALUE - 用于加密对象的 32 字节 RAW Base64 编码数据密钥。

例如:

# RawBase64-Encoded string "mybucket32byteencryptionkeyssec"
--enc-c "myminio/mybucket/prefix/object.obj=bXlidWNrZXQzMmJ5dGVlbmNyeXB0aW9ua2V5c3NlYwo"

重复该参数可指定多个加密密钥。

指定一个前缀的路径,以便对该路径上的所有匹配对象进行加密:

--enc-c "myminio/mybucket/prefix/=bXlidWNrZXQzMmJ5dGVlbmNyeXB0aW9ua2V5c3NlYwo"

备注

MinIO 强烈建议不要在生产工作负载中使用 SSE-C 加密。 通过 --enc-kms 参数使用 SSE-KMS 或通过 --enc-s3 参数使用 SSE-S3。

--json-input
Optional

.json 或 .ndjson 输入对象的数据格式。 指定 JSON 内容的类型为 type=<VALUE> 。 该值可以是:

更多信息请参见S3 API的 JSONInput 文档。

--json-output
Optional

.json 输出的数据格式。 支持 rd=value 键,其中 rd 是 JSON 文档的 RecordDelimiter 。

省略该选项将使用默认的新行字符 \n 。

更多信息请参见 S3 API 文档中的 JSONOutput 。

--recursive, r
Optional

递归搜索指定的 mc sql ALIAS 目录,使用 mc sql –query SQL 语句。

全局标记

此命令支持任何 全局标志。

示例

选择存储桶中所有对象中的所有列

使用 mc sql 命令,并加上 --recursive 和 --query 选项,可以将查询应用于存储桶中的所有对象:

mc sql --recursive --query "select * from S3Object" ALIAS/PATH
  • 将 ALIAS 替换为 MinIO 部署的 alias 。

  • 将 PATH 替换为 MinIO 部署上存储桶的路径。

对一个对象运行聚合查询

使用 mc sql 命令和 --query 选项查询 MinIO 部署上的一个对象:

mc sql --query "select count(s.power) from S3Object" ALIAS/PATH
  • 将 ALIAS 替换为 MinIO 部署的 alias 。

  • 将 PATH 替换为 MinIO 部署上对象的路径。

行为

输入格式

mc sql 支持以下输入格式:

Input Format Types

Type

content-type Value

.csv

text/csv

.json

application/json

.parquet

none

对于 .csv 文件类型,使用 mc sql --csv-input 来指定 CSV 数据格式。 有关 CSV 格式化字段的更多信息,请参见 CSV 格式字段 。

对于 .json 文件类型,使用 mc sql --json-input 来指定 JSON 数据格式。

对于 .parquet 文件类型,mc sql 命令会自动解释数据格式。

mc sql 通过目标对象的文件扩展名来确定文件类型。 例如,一个名为 data.json 的对象被解释为一个JSON文件。

如果对象具有适当的 content-type ,您可以查询具有不同扩展名的支持类型的数据。 有关更多信息,请参见 mc cp --attr 命令。

CSV 格式字段

以下表格列出了可用于 mc sql --csv-input 和 mc sql --csv-output 命令的有效键值对。 某些键值对仅适用于 --csv-input 。 有关 S3 CSV 格式的更多信息,请参阅 S3 API 文档中的 CSVInput 。

Key

--csv-input Only

描述

rd

输入 .csv 文件中分隔每个记录(行)的字符。

对应于 S3 API 中的 CSVInput 的 RecordDelimiter 。

fd

分隔记录中每个字段的字符。 默认为 , 。

对应于 S3 API 中的 CSVInput 的 FieldDelimiter 。

qc

当 fd 字符是值的一部分时,用于转义的字符。默认为 ``” `` (双引号)。

对应于 S3 API 中的 CSVInput 的 QuoteCharacter 。

qec

用于转义已在值内部转义的引号字符 " 的字符。

对应于 S3 API 中的 CSVInput 的 QuoteEscapeCharacter 。

fh

Yes

.csv 文件中第一行的内容。

指定以下支持的值之一:

  • NONE - 第一行不是标题。

  • IGNORE - 忽略第一行。

  • USE - 第一行是标题。

对于 NONE 或 IGNORE ,您必须在 --query 语句中指定列位置 _# 来识别列。

对于 USE ,您可以在 --query 语句中指定标题值来识别列。

对应于 S3 API 中的 CSVInput 的 FieldHeaderInfo 。

cc

Yes

用于表示应忽略记录的字符。 该字符 必须 出现在记录的开头。

对应于 S3 API 中的 CSVInput 的 Comment 。

qrd

Yes

指定 TRUE 以表示字段可能包含记录分隔符值( rd )。

默认为 FALSE 。

对应于 S3 API 中的 CSVInput 的 AllowQuotedRecordDelimiter 。

S3兼容性

mc 命令行工具是为了与 AWS S3 API 兼容而构建的,并且已经过测试, 以确保在与 MinIO 和 AWS S3 配合使用时,功能和行为符合预期。

MinIO 不对其他 S3 兼容服务提供任何保证,因为它们的 S3 API 实现是 未知的,因此不受支持。尽管 mc 命令 可能 如文档中所 述工作,但任何此类使用都是您自己的风险。

Join Slack 商业支持购买咨询