Kusto CLI
Kusto.Cli 是命令列公用程式,可用於在 Kusto 叢集上傳送查詢和控制命令。 您可以用幾種模式來執行:
REPL 模式:使用者輸入查詢和命令,而工具會顯示結果,然後等候下一個使用者查詢/命令。 (「REPL」代表「read/eval/print/loop」。)
執行模式:使用者輸入一或多個查詢和命令,以命令列引數的形式執行。 引數會依序自動執行,並將其結果輸出到主控台。 或者,在執行所有輸入查詢和命令之後,此工具就會進入 REPL 模式。
腳本模式:類似于執行模式,但使用檔案中指定的查詢和命令, (「script」) ,而不是透過命令列引數。
Kusto.Cli 的主要目的是為了針對通常需要撰寫程式碼的 Kusto 服務來自動化工作。 例如,C# 程式或 PowerShell 指令碼。
取得工具
Kusto.Cli 是 NuGet 套件 Microsoft.Azure.Kusto.Tools
的一部分,您可以下載 .NET。 下載套件之後,請將套件的 tools
資料夾解壓縮至目的檔案夾。 不需要額外的安裝,因為其是可自行安裝的 xcopy。
執行工具
Kusto.Cli 需要至少一個命令列引數來執行。 這個引數通常是工具應該連接之 Kusto 服務的連接字串。
如需詳細資訊,請參閱 Kusto 連接字串 如果您在不使用命令列引數的情況下執行工具,並使用一組未知的引數,或使用 /help
參數來執行工具,則主控台上會顯示說明訊息。
例如,使用下列命令來執行 Kusto.Cli。 此命令會連接到 help
Kusto 服務,並將資料庫內容設定為 Samples
資料庫:
Kusto.Cli.exe "https://help.kusto.windows.net/Samples;Fed=true"
注意
在連接字串前後使用雙引號,以防止 shell 應用程式 (例如 PowerShell) 誤解讀分號 (;
) 和類似的字元。
命令列引數
(若要取得命令列引數的完整清單,請執行: Kusto.Cli.exe -help
.)
Kusto.Cli.exe
ConnectionString [Switches]
ConnectionString
- 保存所有 Kusto 連接資訊的 Kusto 連接字串。
預設值為
net.tcp://localhost/NetDefaultDB
。
-execute:
QueryOrCommand
- 如果有指定,會在執行模式中執行 Kusto.Cli,並執行指定的查詢或命令。 此參數可以重複執行,並依外觀循序執行查詢/命令。
此參數不能與
-script
或-scriptml
一起使用。
-keepRunning:
EnableKeepRunning
- 如果有指定為
true
或false
,則會在處理完所有-script
或-execute
值之後啟用或停用 REPL 模式。
-script:
ScriptFile
- 如果有指定,會在指令碼模式中執行 Kusto.Cli。 系統會載入指定的指令檔,並依序執行其中的查詢或命令。
使用分行符號來分隔查詢/命令,但以
&
或&&
組合結尾的行除外,如下所述。 此參數不能與-execute
一起使用。
-scriptml:
ScriptFile
- 如果有指定,會在指令碼模式中執行 Kusto.Cli。 系統會載入指定的指令檔,並依序執行其中的查詢或命令。
整個腳本檔案會被視為單一查詢或命令, (忽略行輸入模式或區塊輸入模式考慮。) 這個參數不能與 一
-execute
起使用。
-scriptQuitOnError:
QuitOnFirstScriptError
- 如果啟用,如果腳本中的命令或查詢產生錯誤,Kusto.Cli 將會結束。 如果停用,即使發生錯誤,腳本執行仍會繼續。 預設會啟用此參數。
-echo:
EnableEchoMode
- 如果有指定為
true
或false
,則會啟用或停用 echo 模式。 當啟用 echo 模式時,會在輸出中重複每個查詢或命令。
-transcript:
TranscriptFile
- 如果有指定,會將程式輸出寫入至 TranscriptFile。
-logToConsole:
EnableLogToConsole
- 如果有指定為
true
或false
,則會啟用或停用在主控台上顯示程式輸出。
-lineMode:
EnableLineMode
- 決定從主控台或腳本輸入查詢或命令時,如何處理分行符號。 根據預設, (或明確設定為
true
) ,此工具會使用「行輸入模式」。 如果設定為false
,腳本會在「區塊輸入模式」中讀取。如需這兩種模式的說明,請參閱下方。
範例
Kusto.Cli.exe "https://help.kusto.windows.net/Samples;Fed=true" -script:"c:\mycommands.txt"
注意
冒號和引數值之間不應該有空格
指示詞
Kusto.Cli 會在此工具中執行一些指示詞,而不是將其傳送至服務進行處理。
指示詞 | 描述 |
---|---|
? #h #help |
取得簡短的說明訊息 |
q #quit #exit |
結束工具 |
#a #abort |
失敗地結束工具 |
#clip |
下一個查詢或命令的結果將會複製到剪貼簿 |
#cls |
清除主控台畫面 |
#connect [ConnectionString] |
連接至不同的 Kusto 服務 (如果已省略 ConnectionString,將會顯示目前的 ConnectionString) |
#crp [Name [= Value]] |
設定用戶端要求屬性的值,或只顯示其值,或顯示所有值。 |
#crp (-list | -doc ) [Prefix] |
依前置詞列出用戶端要求屬性,或全部列出 |
#dbcontext [DatabaseName] |
將查詢和命令所使用的「內容」資料庫變更為 DatabaseName。 如果省略,則會顯示目前的內容 |
ke Text |
將指定的文字傳送至執行中的 Kusto.Explorer 流程 |
#loop CountText |
執行文字數次 |
#qp [Name [= Value]] |
設定查詢參數的值,或只顯示其值,或顯示所有值。 開頭/結尾的單引號/雙引號將會被修剪 |
#save Filename |
下一個查詢或命令的結果將會儲存到指定的 CSV 檔案 |
#script Filename |
執行指定的指令碼 |
#scriptml Filename |
執行指定的多行指令碼 |
行輸入模式和區塊輸入模式
根據預設,Kusto.Cli 會以行輸入模式執行。 每個換行字元都會轉譯為查詢/命令之間的分隔符號,而這一行則會立即傳送以供執行。
在此模式中,您可以將長查詢或命令分成多行。 在新行之前,&
字元是行的最後一個字元,會導致 Kusto.Cli 繼續讀取下一行。 在新行之前,&&
字元是行的最後一個字元,會導致 Kusto.Cli 忽略新行並繼續讀取下一行。
Kusto.Cli 也支援在 區塊輸入模式 中執行,方法是在命令列中指定 -lineMode:false
,或藉由執行 指示詞 #blockmode
。 在此模式中,Kusto.Cli 的行為類似于 Kusto.Explorer 和 Kusto.WebExplorer,在該行中會一起讀取為「區塊」,而每個區塊是由單一查詢或命令所組成,而區塊會以一或多個空白行分隔。
注意
從腳本檔案讀取查詢/命令時,強烈建議使用 區塊輸入模式 , (-script
) 。
註解
Kusto.Cli 會解讀 //
以批註行開頭新行的字串。 其會忽略該行的其餘部分,並繼續讀取下一行。
僅限工具選項
命令 | 效果 | 目前 |
---|---|---|
#timeon|#timeoff | 啟用/停用選項 timing :顯示要求的時間 |
true |
#tableon|#tableoff | 啟用/停用選項 tableView :將結果集格式化為資料表 |
true |
#marson|#marsoff | 啟用/停用選項 marsView :顯示倒數第二個結果集 |
FALSE |
#resultson|#resultsoff | 啟用/停用選項 outputResultsSet :顯示結果集 |
true |
#prettyon|#prettyoff | 啟用/停用選項 prettyErrors :清除錯誤 |
true |
#markdownon|#markdownoff | 啟用/停用選項 markdownView :將資料表格式化為 MarkDown |
FALSE |
#progressiveon|#progressiveoff | 啟用/停用選項 progressiveView :要求並顯示漸進式結果 |
FALSE |
#linemode|#blockmode | 啟用/停用選項 lineMode :單行輸入模式 |
TRUE |
命令 | 效果 | 預設 |
---|---|---|
#cridon|#cridoff | (啟用|停用選項 crid :在傳送要求之前顯示 ClientRequestId) |
FALSE |
#csvheaderson|#csvheadersoff | (啟用|停用選項 csvHeaders :在 CSV 輸出中包含標頭) |
TRUE |
#focuson|#focusoff | (啟用|停用選項 focus :移除所有額外的寫錯字,並將焦點放在適當的內容) |
FALSE |
#linemode|#blockmode | (啟用|停用選項 lineMode :單行輸入模式) |
TRUE |
#markdownon|#markdownoff | (啟用|停用選項 markdownView :將資料表格式化為 MarkDown) |
FALSE |
#marson|#marsoff | (啟用|停用選項 marsView :顯示倒數第二個結果集) |
FALSE |
#prettyon|#prettyoff | (啟用|停用選項 prettyErrors :清除錯誤) |
TRUE |
#querystreamingon|#querystreamingoff | (啟用|停用選項 queryStreaming :使用 queryStreaming 端點 (僅限 Kusto 小組)) |
FALSE |
#resultson|#resultsoff | (啟用|停用選項 outputResultsSet :顯示結果集) |
TRUE |
#tableon|#tableoff | (啟用|停用選項 tableView :將結果集格式化為資料表) |
TRUE |
#timeon|#timeoff | (啟用|停用選項 timing :顯示要求花費的時間量) |
TRUE |
#typeon|#typeoff | (enable|disable 選項 typeView :在資料表檢視中顯示每個資料行的類型。強制 Streaming=true) |
TRUE |
#v2protocolon|#v2protocoloff | (啟用|停用選項 v2protocol :使用 v2 查詢通訊協定,而不是 v1) |
TRUE |
使用 Kusto.Cli 將結果匯出為 CSV
Kusto.Cli 具有特殊的用戶端命令 #save
,會將下一個查詢結果匯出為 CSV 格式的本機檔案。 例如,下一行將從 StormEvents
資料表中的 10 筆記錄匯出到 help.kusto.windows.net
叢集 Samples
資料庫:
Kusto.Cli.exe @help/Samples -execute:"#save c:\temp\test.log" -execute:"StormEvents | take 10"
使用 Kusto.Cli 來控制正在執行的 Kusto.Explorer 實例
您可以指示 Kusto.Cli 與在電腦上執行 Kusto.Explorer 的「主要」實例進行通訊,並傳送查詢。 這項機制適用於想要執行一些查詢,但不想重複啟動 Kusto.Explorer 流程的程式。 在下列範例中,Kusto.Cli 會用來對說明叢集執行查詢:
#connect cluster('help').database('Samples')
#ke StormEvents | count
語法很簡單:#ke
,後面接著空格,以及要執行的查詢。
然後,會將查詢傳送至 Kusto.Explorer 的主要實例 (如果有的話),並包含 Kusto.Cli 中設定目前的叢集/資料庫。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應