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 格式字段。
- --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
对一个对象运行聚合查询
使用 mc sql
命令和 --query
选项查询 MinIO 部署上的一个对象:
mc sql --query "select count(s.power) from S3Object" ALIAS/PATH
行为
输入格式
mc sql
支持以下输入格式:
Type |
|
---|---|
|
|
|
|
|
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 |
|
描述 |
---|---|---|
|
输入 对应于 S3 API 中的 |
|
|
分隔记录中每个字段的字符。 默认为 对应于 S3 API 中的 |
|
|
当 对应于 S3 API 中的 |
|
|
用于转义已在值内部转义的引号字符 对应于 S3 API 中的 |
|
|
Yes |
指定以下支持的值之一:
对于 对于 对应于 S3 API 中的 |
|
Yes |
用于表示应忽略记录的字符。 该字符 必须 出现在记录的开头。 对应于 S3 API 中的 |
|
Yes |
指定 默认为 对应于 S3 API 中的 |
S3兼容性
mc 命令行工具是为了与 AWS S3 API 兼容而构建的,并且已经过测试, 以确保在与 MinIO 和 AWS S3 配合使用时,功能和行为符合预期。
MinIO 不对其他 S3 兼容服务提供任何保证,因为它们的 S3 API 实现是 未知的,因此不受支持。尽管 mc 命令 可能 如文档中所 述工作,但任何此类使用都是您自己的风险。