中文文档

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-inputmc sql --csv-output 命令的有效键值对。 某些键值对仅适用于 --csv-input 。 有关 S3 CSV 格式的更多信息,请参阅 S3 API 文档中的 CSVInput

Key

--csv-input Only

描述

rd

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

对应于 S3 API 中的 CSVInputRecordDelimiter

fd

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

对应于 S3 API 中的 CSVInputFieldDelimiter

qc

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

对应于 S3 API 中的 CSVInputQuoteCharacter

qec

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

对应于 S3 API 中的 CSVInputQuoteEscapeCharacter

fh

Yes

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

指定以下支持的值之一:

  • NONE - 第一行不是标题。

  • IGNORE - 忽略第一行。

  • USE - 第一行是标题。

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

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

对应于 S3 API 中的 CSVInputFieldHeaderInfo

cc

Yes

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

对应于 S3 API 中的 CSVInputComment

qrd

Yes

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

默认为 FALSE

对应于 S3 API 中的 CSVInputAllowQuotedRecordDelimiter

S3兼容性

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

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

Join Slack 商业支持购买咨询