文件

mc sql

語法

mc sql 命令提供了一個 S3 Select 介面,用於在指定的 MinIO 部署中的物件上執行 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
  • 方括號 [] 表示可選參數。

  • 共享一行的參數是相互依賴的。

  • 使用管道符號 | 分隔的參數是互斥的。

將範例複製到文字編輯器,並在終端/shell 中執行命令之前根據需要進行修改。

參數

ALIAS
必填

要對其執行 SQL 查詢的儲存桶或物件的完整路徑。將已配置的 S3 服務的 別名 指定為 ALIAS 路徑的前綴。例如

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 - 用於加密物件的 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 API 的文件 CSVInput 以取得關於 S3 CSV 格式的更多資訊。

--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 命令可能會如文件所述運作,但任何此類使用風險由您自行承擔。