文档

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 格式化字段

--compression
可选

输入对象的压缩类型。指定以下支持的值之一

  • GZIP

  • BZIP2

  • NONE(默认)

仅MinIO后端支持的压缩方案

--csv-output
可选

用于.csv输出的格式。指定一个逗号分隔的key=value,...键值对字符串。有关有效键的更多信息,请参阅CSV 格式化字段

有关更多信息,请参阅 S3 API CSVOutput

--csv-output-header
可选

.csv输出文件的标题行。指定一个逗号分隔的字段字符串,格式为field1,field2,...

省略此选项将输出没有标题行的.csv文件。

--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>。该值可以是

  • DOCUMENT - JSON 文档

  • LINES - JSON

有关更多信息,请参阅 S3 API JSONInput

--json-output
可选

用于.json输出的格式。支持rd=value键,其中rd是 JSON 文档的RecordDelimiter

省略此选项将使用默认换行符\n

有关更多信息,请参阅 S3 API JSONOutput

--recursive, r
可选

使用--query SQL 语句递归搜索指定的ALIAS目录。

全局标志

此命令支持任何全局标志

示例

选择存储桶中所有对象的所有列

mc sql--recursive--query选项一起使用,以将查询应用于存储桶中的所有对象

mc sql --recursive --query "select * from S3Object" ALIAS/PATH
  • ALIAS替换为 MinIO 部署的别名

  • PATH替换为 MinIO 部署上存储桶的路径。

对对象运行聚合查询

mc sql--query选项一起使用,以查询 MinIO 部署上的对象

mc sql --query "select count(s.power) from S3Object" ALIAS/PATH
  • ALIAS替换为 MinIO 部署的别名

  • PATH替换为 MinIO 部署上对象的路径。

行为

输入格式

mc sql支持以下输入格式

输入格式类型

类型

content-type

.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

--csv-input 仅限

描述

rd

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

对应于 S3 API CSVInput 中的 RecordDelimiter

fd

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

对应于 S3 API CSVInput 中的 FieldDelimeter

qc

fd 字符是值的一部分时使用的转义字符。默认为 "

对应于 S3 API CSVInput 中的 QuoteCharacter

qec

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

对应于 S3 API CSVInput 中的 QuoteEscapeCharacter

fh

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

指定以下支持值之一

  • NONE - 第一行不是标题。

  • IGNORE - 忽略第一行。

  • USE - 第一行是标题。

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

对于 USE,可以使用标题值在 --query 语句中识别列。

对应于 S3 API CSVInput 中的 FieldHeaderInfo

cc

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

对应于 S3 API CSVInput 中的 Comment

qrd

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

默认为 FALSE

对应于 S3 API CSVInput 中的 AllowQuotedRecordDelimiter

S3 兼容性

mc 命令行工具构建为与 AWS S3 API 兼容,并在 MinIO 和 AWS S3 上测试以获得预期的功能和行为。

MinIO 不保证其他与 S3 兼容的服务,因为它们的 S3 API 实现未知,因此不受支持。虽然 mc 命令*可能*按文档记录的方式工作,但任何此类使用均由您自行承担风险。