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 命令 可能 如文档中所 述工作,但任何此类使用都是您自己的风险。
