欢迎来到即将发布的 MinIO 文档版本! 此页面上的内容正在积极开发中 可能随时更改。 如果找不到您要找的内容,请查看我们的 历史文档。 感谢您的耐心等待。 我们期待您贡献自己强大的力量,帮助更多的中国技术开发者![翻译]

mc sql

描述

mc sql 命令提供了一个 S3 Select 接口,用于对指定的 S3 兼容服务中的对象执行 sql 查询。

参见:s3-docs:Selecting content from objects <selecting-content-from-objects> 了解有关 S3 Select 行为和限制的更多信息。

输入格式

mc sql 支持以下输入格式:

  • .csv

  • .json

  • .parquet

对于 .csv 文件类型,使用 mc sql --csv-input 来 指定 CSV 数据格式。 有关更多信息,请参阅 CSV 格式字段 有关 CSV 格式字段的信息。

对于 .json 文件类型,使用 :mc-command-option:`mc sql json-input` 指定 JSON 数据格式。

对于``.parquet`` 文件类型,mc sql 会自动解释数据格式。

CSV 格式字段

下表列出了可用于的有效键值对 mc sql --csv-input 和:mc-cmd-option:mc sql csv-output。 某些密钥对仅对 --csv-input 有效 有关更多信息,请参阅 S3 API 的文档 CSVInput 有关 S3 CSV 格式的信息。

Key

--csv-input Only

Description

rd

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

对应于 S3 API CSVInput 中的 RecordDelimiter

fd

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

对应于 S3 API CSVInput 中的``FieldDelimeter``。

qc

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

对应于 S3 API CSVInput 中的``QuoteCharacter``。

qec

用于在已经转义的值中转义引号 " 字符的字符。

对应于 S3 API CSVInput 中的``QuoteEscapeCharacter``。

fh

Yes

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

指定以下支持的值之一:

  • NONE - 第一行不是标题。

  • IGNORE - 忽略第一行。

  • USE - 第一行是标题。

对于 “NONE” 或 “IGNORE”,您必须指定列位置 _# 来标识 --query 语句中的列。

对于 “USE”,您可以指定标题值来标识 :mc-command-option:`~mc sql query` 语句中的列。

对应于 S3 API CSVInput 中的``FieldHeaderInfo``。

cc

Yes

用于指示记录的字符应被忽略。 字符 must 出现在记录的开头。

对应于 S3 API CSVInput 中的``Comment``。

qrd

Yes

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

默认为 FALSE.

对应于 S3 API CSVInput 中的 “AllowQuotedRecordDelimiter” 。

例子

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

使用 mc sql with the --recursive--query 将查询应用于存储桶中所有对象的选项:

mc sql --recursive --query "select * from S3Object" ALIAS/PATH
  • ALIAS 替换为 S3 兼容主机的 alias

  • PATH 替换为 S3 兼容主机上存储桶的路径。

对对象运行聚合查询

使用 mc sql--query 在 S3 兼容主机上查询对象的选项:

mc sql --query "select count(s.power) from S3Object" ALIAS/PATH
  • ALIAS 替换为 S3 兼容主机的 alias

  • PATH 替换为对象的路径 在 S3 兼容主机上。

语法

mc sql 具有以下语法:

mc sql [FLAGS] TARGET [TARGET...]

mc sql 支持以下论点:

TARGET

Required 要针对其运行 SQL 查询的存储桶或对象的完整路径。 将配置的 S3 服务的 alias 指定为 TARGET 路径的前缀。 例如:

mc sql [FLAGS] play/mybucket
--query, --e

要在指定的 TARGET 目录或对象上执行的 SQL 语句。 用双引号 " 将整个 SQL 查询括起来.

默认为 "select * from s3object".

--recursive, --r

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

--csv-input

.csv 输入对象的数据格式。 指定一串逗号分隔的 key=value,...。 有关有效密钥的更多信息,请参阅 CSV 格式字段

--json-input

.json 输入对象的数据格式。 将 JSON 内容的类型指定为 type=<VALUE>。 该值可以是:

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

--compression

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

  • GZIP

  • BZIP2

  • NONE (default)

--csv-output

.csv 输出的数据格式。 指定一串逗号分隔的 key=value,...。 有关有效密钥的更多信息,请参阅 CSV 格式字段

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

--csv-output-header

.csv 输出文件的标题行。 将一串逗号分隔的字段指定为 “field1,field2,…”。

省略输出没有标题行的 “.csv”。

--json-output

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

省略使用默认的换行符``n``。

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

--encrypt-key

用于使用客户端密钥 (SSE-C) 执行服务器端加密的加密密钥。 将逗号分隔的键值对指定为 “KEY=VALUE,…”。

  • 对于“KEY”,指定与 S3 兼容的服务 alias 和存储桶的完整路径,包括任何 桶前缀。 使用正斜杠 \ 分隔别名和存储桶路径。 例如,“play/mybucket”。

  • 对于 “VALUE”,指定要用于指定给 “KEY” 的存储桶或存储桶前缀中的加密对象的数据密钥。

--encrypt-key 可以使用 “MC_ENCRYPT_KEY”

用于填充加密键值对列表的环境变量,作为在命令行中指定它们的替代方法。