mc sql
语法
mc sql 命令提供 S3 Select 接口,用于对指定 MinIO 部署中的对象执行 SQL 查询。
有关 S3 Select 的行为和限制,请参阅 Selecting content from objects。
以下命令会查询 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
方括号
[]表示可选参数。同一行中的参数彼此相互依赖。
使用管道符
|分隔的参数彼此互斥。
请先将示例复制到文本编辑器中并按需修改,再在终端 / shell 中运行命令。
参数
- ALIAS
- Required
要执行 SQL 查询的存储桶或对象的完整路径。 指定已配置 S3 服务的 alias 作为
ALIAS路径前缀。 例如:mc sql [FLAGS] play/mybucket
- --query, e
- Required
在指定
ALIAS目录或对象上执行的 SQL 语句。 将完整 SQL 查询用双引号"包裹。默认为
"select * from S3Object"。
- --csv-input
- Optional
.csv输入对象的数据格式。 指定由逗号分隔的key=value,...键值对字符串。 有效键的更多信息请参阅 CSV 格式字段。
- --compression
- Optional
输入对象的压缩类型。 指定以下受支持值之一:
GZIPBZIP2``NONE``(默认)
仅 MinIO 后端支持以下压缩方案:
- --csv-output
- Optional
.csv输出的数据格式。 指定由逗号分隔的key=value,...键值对字符串。 有效键的更多信息请参阅 CSV 格式字段。更多信息请参阅 S3 API CSVOutput。
- --enc-c
- Optional
使用客户端管理的密钥,通过服务端 SSE-C 加密 对对象进行加密或解密。
该参数接受格式为
KEY=VALUE的键值对。KEY对象的完整路径,格式为
alias/bucket/path/object.ext。你也可以只指定顶层路径,以便对该路径下的所有操作使用同一个加密密钥。
VALUE指定用于 SSE-C 加密的密钥,可以是 32 字节 RawBase64 编码密钥, 也可以是 64 字节十六进制编码密钥。
Raw 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"
Note
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。
全局标志
此命令支持 全局标志 中的任意选项。
示例
选择存储桶内所有对象的所有列
将 mc sql 与 --recursive 和 --query 选项结合使用,可将查询应用到存储桶中的所有对象:
mc sql --recursive --query "select * from S3Object" ALIAS/PATH
在对象上运行聚合查询
将 mc sql 与 --query 选项结合使用,可查询 MinIO 部署上的对象:
mc sql --query "select count(s.power) from S3Object" ALIAS/PATH
行为
输入格式
mc sql 支持以下输入格式:
类型 |
|
|---|---|
|
|
|
|
|
无 |
对于 .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 文档。
键 |
仅 |
说明 |
|---|---|---|
|
用于分隔输入 对应 S3 API |
|
|
用于分隔一条记录中各字段的字符。默认为 对应 S3 API |
|
|
当 对应 S3 API |
|
|
在已转义值内部,用于转义引号 对应 S3 API |
|
|
是 |
指定以下受支持值之一:
对于 对于 对应 S3 API |
|
是 |
用于指示应忽略某条记录的字符。 该字符 必须 出现在记录开头。 对应 S3 API |
|
是 |
指定 默认为 对应 S3 API |
S3 兼容性
mc 命令行工具以兼容 AWS S3 API 为目标构建,并针对 MinIO 和 AWS S3 进行了测试,以验证预期的功能与行为。
对于其他 S3 兼容服务,MinIO 不提供任何保证,因为这些服务的 S3 API 实现未知, 因此不在支持范围内。虽然 mc 命令 可能 仍能按文档说明工作,但此类 用法需要你自行承担风险。