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 格式化欄位。
- --csv-output
- 可選
.csv
輸出的資料格式。指定一個以逗號分隔的key=value,...
對字串。有關有效鍵的更多資訊,請參閱 CSV 格式化欄位。有關更多資訊,請參閱 S3 API CSVOutput。
- --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>
。值可以是有關更多資訊,請參閱 S3 API JSONInput。
- --json-output
- 可選
.json
輸出的資料格式。支援rd=value
鍵,其中rd
是 JSON 文件的RecordDelimiter
。省略以使用預設的換行字元
\n
。有關更多資訊,請參閱 S3 API JSONOutput。
全域旗標
此命令支援任何 全域旗標。
範例
選取儲存桶中所有物件的所有欄位
使用 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
支援以下輸入格式:
類型 |
|
---|---|
|
|
|
|
|
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 API 的文件 CSVInput 以取得關於 S3 CSV 格式的更多資訊。
鍵 |
|
描述 |
---|---|---|
|
在輸入的 對應於 S3 API |
|
|
在一個記錄中,分隔每個欄位的字元。預設為 對應於 S3 API |
|
|
當 對應於 S3 API |
|
|
用於跳脫已經跳脫的值內部的引號 對應於 S3 API |
|
|
是 |
指定以下其中一個支援的值:
對於 對於 對應於 S3 API |
|
是 |
用於指示應忽略記錄的字元。該字元必須出現在記錄的開頭。 對應於 S3 API |
|
是 |
指定 預設為 對應於 S3 API |
S3 相容性
mc 命令列工具是為了與 AWS S3 API 相容而建構的,並在 MinIO 和 AWS S3 上進行測試,以確保其預期功能和行為。
MinIO 對其他 S3 相容服務不提供任何保證,因為它們的 S3 API 實作是未知的,因此不受支援。雖然 mc 命令可能會如文件所述運作,但任何此類使用風險由您自行承擔。