mc sql
语法
该 mc sql
命令提供了一个 S3 Select 接口,用于对指定 MinIO 部署中的对象执行 SQL 查询。
请参阅 从对象中选择内容 以获取有关 S3 Select 行为和限制的更多信息。
以下命令查询 myminio
MinIO 部署上的 mydata
Bucket 中的所有对象
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 中运行命令之前根据需要进行修改。
参数
- 别名
- 必需
要针对其运行 SQL 查询的 Bucket 或对象的完整路径。指定已配置的 S3 服务的 别名 作为
别名
路径的前缀。例如mc sql [FLAGS] play/mybucket
- --query, e
- 必需
在指定的
ALIAS
目录或对象上执行的 SQL 语句。将整个 SQL 查询用双引号"
括起来。默认为
"select * from S3Object"
。
- --csv-input
- 可选
用于
.csv
输入对象的格式。指定一个逗号分隔的key=value,...
键值对字符串。有关有效键的更多信息,请参阅CSV 格式化字段。
- --csv-output
- 可选
用于
.csv
输出的格式。指定一个逗号分隔的key=value,...
键值对字符串。有关有效键的更多信息,请参阅CSV 格式化字段。有关更多信息,请参阅 S3 API CSVOutput。
- --enc-c
- 可选
使用服务器端SSE-C 加密和客户端管理的密钥来加密或解密对象。
此参数接受格式为
KEY=VALUE
的键值对。KEY
对象的完整路径,格式为
alias/bucket/path/object.ext
。您可以仅指定顶级路径,以便对该路径中的所有操作使用单个加密密钥。
VALUE
指定一个 32 字节的 RawBase64 编码密钥*或*一个 64 字节的十六进制编码密钥,用于 SSE-C 加密。
Raw Base64 编码**拒绝**
=
填充的密钥。省略填充或使用支持 RAW 格式的 Base64 编码器。KEY
- 对象的完整路径,格式为alias/bucket/path/object
。VALUE
- 用于加密对象(s)的 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
- 可选
用于
.json
或.ndjson
输入对象的格式。指定 JSON 内容的类型,格式为type=<VALUE>
。该值可以是有关更多信息,请参阅 S3 API JSONInput。
- --json-output
- 可选
用于
.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
支持以下输入格式
类型 |
|
---|---|
|
|
|
|
|
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。
键 |
|
描述 |
---|---|---|
|
输入 对应于 S3 API |
|
|
分隔记录中每个字段的字符。默认为 对应于 S3 API |
|
|
当 对应于 S3 API |
|
|
用于转义已转义值内的双引号 对应于 S3 API |
|
|
是 |
指定以下支持值之一
对于 对于 对应于 S3 API |
|
是 |
用于指示应忽略记录的字符。该字符*必须*出现在记录的开头。 对应于 S3 API |
|
是 |
指定 默认为 对应于 S3 API |
S3 兼容性
mc 命令行工具构建为与 AWS S3 API 兼容,并在 MinIO 和 AWS S3 上测试以获得预期的功能和行为。
MinIO 不保证其他与 S3 兼容的服务,因为它们的 S3 API 实现未知,因此不受支持。虽然 mc 命令*可能*按文档记录的方式工作,但任何此类使用均由您自行承担风险。