cqlsh:CQL shell
cqlsh
是使用 CQL(Cassandra 查詢語言)與 Cassandra 互動的命令列介面。它隨附在每個 Cassandra 套件中,可以在 bin/ 目錄中找到,與 cassandra 可執行檔並列。cqlsh
是使用 Python 原生通訊協定驅動程式實作,並連線到指定的單一節點。
cqlshrc
cqlshrc
檔案包含 cqlsh
的組態選項。預設情況下,此檔案位於使用者的家目錄中,路徑為 ~/.cassandra/cqlshrc
,但可以使用 --cqlshrc
選項指定自訂位置。
範例設定值和文件可以在 tarball 安裝的 conf/cqlshrc.sample
檔案中找到。您也可以在線上檢視 cqlshrc 檔案 的最新版本。
cql 歷程
您執行的所有 CQL 指令都會寫入歷程檔案。預設情況下,CQL 歷程會寫入 ~/.cassandra/cql_history
。您可以透過設定環境變數 CQL_HISTORY
來變更這個預設值,例如 ~/some/other/path/to/cqlsh_history
,其中 cqlsh_history
是個檔案。如果歷程檔案的所有上層目錄不存在,系統會將其建立。如果您不想要保留歷程,可以將 CQL_HISTORY 設定為 /dev/null。此功能從 Cassandra 4.1 開始支援。
命令列選項
用法:cqlsh.py [選項] [主機 [連接埠]]
Apache Cassandra 的 CQL Shell
選項
--version
-
顯示程式版本號碼並結束
-h
--help
-
顯示此說明訊息並結束
-C
--color
-
總是使用彩色輸出
--no-color
-
永遠不使用彩色輸出
--browser=BROWSER
-
用於顯示 CQL 說明的瀏覽器,其中 BROWSER 可以是:docs.python.org/3/library/webbrowser.html 中支援的瀏覽器之一。瀏覽器路徑後接 %s,例如:/usr/bin/google-chrome-stable %s
--ssl
-
使用 SSL
-u USERNAME
--username=USERNAME
-
以使用者身分驗證。
-p PASSWORD
--password=PASSWORD
-
使用密碼驗證。
-k KEYSPACE
--keyspace=KEYSPACE
-
驗證指定的鍵值空間。
-f FILE
--file=FILE
-
從 FILE 執行指令,然後結束
--debug
-
顯示其他除錯資訊
--coverage
-
收集覆蓋率資料
--encoding=ENCODING
-
指定輸出使用的非預設編碼。(預設值:utf-8)
--cqlshrc=CQLSHRC
-
指定替代的 cqlshrc 檔案位置。
--credentials=CREDENTIALS
-
指定替代的認證檔案位置。
--cqlversion=CQLVERSION
-
指定特定 CQL 版本,預設情況下會使用伺服器支援的最高版本。範例:「3.0.3」、「3.1.0」
--protocol-version=PROTOCOL_VERSION
-
指定特定通訊協定版本,否則客戶端會預設並在必要時降級
-e EXECUTE
--execute=EXECUTE
-
執行陳述式並結束。
--connect-timeout=CONNECT_TIMEOUT
-
指定連線逾時時間(秒)(預設值:5 秒)。
--request-timeout=REQUEST_TIMEOUT
-
指定預設要求逾時時間(秒)(預設:10 秒)。
-t, --tty
-
強制 tty 模式(命令提示字元)。
-v
--v
-
列印 cqlsh 的目前版本。
特殊命令
除了支援一般 CQL 陳述式外,cqlsh
也支援許多不屬於 CQL 的特殊命令。這些命令詳述如下。
CONSISTENCY
用法
:CONSISTENCY <一致性層級>
設定後續作業的一致性層級。有效引數包括
-
ANY
-
ONE
-
TWO
-
THREE
-
QUORUM
-
ALL
-
LOCAL_QUORUM
-
LOCAL_ONE
-
SERIAL
-
LOCAL_SERIAL
SERIAL CONSISTENCY
用法
:SERIAL CONSISTENCY <一致性層級>
設定後續作業的序號一致性層級。有效引數包括
-
SERIAL
-
LOCAL_SERIAL
序號一致性層級僅用於條件式更新(具有 IF
條件的 INSERT
、UPDATE
和 DELETE
)。對於這些條件式更新,序號一致性層級會定義序號階段(或「paxos」階段)的一致性層級,而一般一致性層級則定義「學習」階段的一致性,亦即哪種類型的讀取會保證立即看到更新。例如,如果條件式寫入的一致性層級為 QUORUM
(且成功),則保證 QUORUM
讀取會看到該寫入。但如果該寫入的一般一致性層級為 ANY
,則只有具有一致性層級 SERIAL
的讀取保證會看到該寫入(即使是一致性為 ALL
的讀取也不保證會看到)。
SHOW VERSION
列印正在使用的 cqlsh
、Cassandra、CQL 和原生通訊協定版本。範例
cqlsh> SHOW VERSION
[cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
SHOW HOST
列印 cqlsh
連線的 Cassandra 節點的 IP 位址和埠,以及叢集名稱。範例
cqlsh> SHOW HOST
Connected to Prod_Cluster at 192.0.0.1:9042.
SHOW REPLICAS
列印列出的給定權杖和鍵值空間的 Cassandra 節點的 IP 位址。此命令在 Cassandra 4.2 中提供。
用法
:SHOW REPLICAS <權杖> (<鍵值空間>)
範例用法
cqlsh> SHOW REPLICAS 95
['192.0.0.1', '192.0.0.2']
SHOW SESSION
美化列印特定追蹤階段。
用法
:SHOW SESSION <session id>
範例用法
cqlsh> SHOW SESSION 95ac6470-327e-11e6-beca-dfb660d92ad8
Tracing session: 95ac6470-327e-11e6-beca-dfb660d92ad8
activity | timestamp | source | source_elapsed | client
-----------------------------------------------------------+----------------------------+-----------+----------------+-----------
Execute CQL3 query | 2016-06-14 17:23:13.979000 | 127.0.0.1 | 0 | 127.0.0.1
Parsing SELECT * FROM system.local; [SharedPool-Worker-1] | 2016-06-14 17:23:13.982000 | 127.0.0.1 | 3843 | 127.0.0.1
...
SOURCE
讀取檔案內容,並將每一行執行為 CQL 陳述式或特殊 cqlsh 指令。
用法
:SOURCE <字串檔名>
範例用法
cqlsh> SOURCE '/home/calvinhobbs/commands.cql'
CAPTURE
開始擷取指令輸出,並將其附加到指定檔案。在擷取期間,輸出將不會顯示在主控台上。
用法
:
CAPTURE '<file>';
CAPTURE OFF;
CAPTURE;
亦即,必須在字串文字中提供要附加到的檔案路徑。路徑會相對於目前工作目錄來詮釋。支援波浪符號簡寫符號 ('~/mydir'
) 來指稱 $HOME
。
只會擷取查詢結果輸出。錯誤和 cqlsh 專屬指令的輸出仍會顯示在 cqlsh 會話中。
若要停止擷取輸出並再次在 cqlsh 會話中顯示,請使用 CAPTURE OFF
。
若要檢查目前的擷取組態,請使用 CAPTURE
,且不帶任何引數。
HELP
提供有關 cqlsh 指令的資訊。若要查看可用的主題,請輸入 HELP
,且不帶任何引數。若要查看主題的說明,請使用 HELP <主題>
。另請參閱 --browser
引數,以控制用於顯示說明的瀏覽器。
HISTORY
在螢幕上列印在伺服器上執行的最後 n
個 cqlsh 指令。如果未指定,則行數預設為 50。n
會設定為目前的 CQL 會話,因此如果您將其設定為 10
,從那一刻起,最多會傳回最後 10 個指令給您。
用法
:
HISTORY <n>
PAGING
啟用分頁、停用分頁或設定讀取查詢的分頁大小。當分頁啟用時,一次只會擷取一頁資料,並會出現提示,以擷取下一頁。一般來說,最好在互動式會話中保持分頁啟用,以避免一次擷取和列印大量資料。
用法
:
PAGING ON
PAGING OFF
PAGING <page size in rows>
DESCRIBE
列印架構元素或叢集的說明(通常是一系列 DDL 陳述式)。這有助於傾印全部或部分架構。
用法
:
DESCRIBE CLUSTER
DESCRIBE SCHEMA
DESCRIBE KEYSPACES
DESCRIBE KEYSPACE <keyspace name>
DESCRIBE TABLES
DESCRIBE TABLE <table name>
DESCRIBE INDEX <index name>
DESCRIBE MATERIALIZED VIEW <view name>
DESCRIBE TYPES
DESCRIBE TYPE <type name>
DESCRIBE FUNCTIONS
DESCRIBE FUNCTION <function name>
DESCRIBE AGGREGATES
DESCRIBE AGGREGATE <aggregate function name>
在任何指令中,DESC
可用於取代 DESCRIBE
。
DESCRIBE CLUSTER
指令會列印叢集名稱和分割器
cqlsh> DESCRIBE CLUSTER
Cluster: Test Cluster
Partitioner: Murmur3Partitioner
DESCRIBE SCHEMA
指令會列印重新建立整個架構所需的 DDL 陳述式。這對於傾印架構以複製叢集或從備份還原特別有用。
COPY TO
將資料從表格複製到 CSV 檔案。
用法
:
COPY <table name> [(<column>, ...)] TO <file name> WITH <copy option> [AND <copy option> ...]
如果未指定任何欄,則會將表格中的所有欄複製到 CSV 檔案。可以在表格名稱後加上括號,並在其中加入逗號分隔的欄位名稱清單,以指定要複製的欄位子集。
<file name>
應為字串常數(帶有單引號),代表目的地檔案的路徑。這也可以是特殊值 STDOUT
(不帶單引號),以將 CSV 列印到標準輸出。
請參閱 shared-copy-options
,以取得適用於 COPY TO
和 COPY FROM
的選項。
COPY FROM
將資料從 CSV 檔案複製到資料表。
用法
:
COPY <table name> [(<column>, ...)] FROM <file name> WITH <copy option> [AND <copy option> ...]
如果未指定任何欄位,則會將 CSV 檔案中的所有欄位複製到資料表。可以在資料表名稱後加上以逗號分隔的欄位名稱清單(用括號括起來),以指定要複製的欄位子集。
<檔案名稱>
應為字串文字(帶有單引號),用於表示來源檔案的路徑。這也可以是特殊值 STDIN
(沒有單引號),用於從標準輸入讀取 CSV 資料。
請參閱 shared-copy-options
,以取得適用於 COPY TO
和 COPY FROM
的選項。
COPY FROM
的選項
INGESTRATE
-
每秒處理的最大列數。預設為 100000。
MAXROWS
-
要匯入的最大列數。-1 表示無限制,且為預設值。
SKIPROWS
-
要略過的初始列數。預設為 0。
SKIPCOLS
-
要略過的欄位名稱清單(以逗號分隔)。預設情況下,不會略過任何欄位。
MAXPARSEERRORS
-
要略過的最大全局解析錯誤數。-1 表示無限制,且為預設值。
MAXINSERTERRORS
-
要略過的最大全局插入錯誤數。-1 表示無限制。預設值為 1000。
ERRFILE
=-
儲存所有無法匯入列的檔案,預設為
import_<ks>_<table>.err
,其中<ks>
是您的鍵空間,而<table>
是您的資料表名稱。 MAXBATCHSIZE
-
單一批次中插入的最大列數。預設為 20。
MINBATCHSIZE
-
單一批次中插入的最小列數。預設為 10。
CHUNKSIZE
-
一次從主程序傳遞給子工作程序的列數。預設為 5000。
共用 COPY 選項
COPY TO
和 COPY FROM
共有的選項。
NULLVAL
-
空值的字串佔位符。預設為
null
。 HEADER
-
對於
COPY TO
,控制 CSV 輸出檔案的第一行是否包含欄位名稱。對於 COPY FROM,指定 CSV 輸入檔案的第一行是否包含欄位名稱。預設為false
。 DECIMALSEP
-
用作小數點分隔符號的字元。預設為
.
。 THOUSANDSSEP
-
用於分隔千位的字元。預設為空字串。
BOOLSTYlE
-
布林值的字串文字格式。預設為
True,False
。 NUMPROCESSES
-
要為
COPY
任務建立的子工作程序數。對於COPY
任務,預設為 16。但是,最多會建立 (num_cores - 1) 個程序。 MAXATTEMPTS
-
在放棄之前,提取資料範圍(使用
COPY TO
時)或插入資料區塊(使用COPY FROM
時)失敗的最大嘗試次數。預設為 5。 REPORTFREQUENCY
-
以秒為單位,狀態更新的更新頻率。預設為 0.25。
RATEFILE
-
輸出速率統計資料的選用檔案。預設情況下,統計資料不會輸出到檔案。
跳脫引號
日期、IP 位址和字串需要用單引號括起來。要在字串文字中使用單引號本身,請使用單引號跳脫它。
擷取簡單文字資料時,cqlsh
會傳回未加引號的字串。然而,從複雜類型(集合、使用者定義類型等)擷取文字資料時,cqlsh
會傳回包含跳脫字元的加引號字串。例如
簡單資料
cqlsh> CREATE TABLE test.simple_data (id int, data text, PRIMARY KEY (id));
cqlsh> INSERT INTO test.simple_data (id, data) values(1, 'I''m fine');
cqlsh> SELECT data from test.simple_data; data
----------
I'm fine
複雜資料
cqlsh> CREATE TABLE test.complex_data (id int, data map<int, text>, PRIMARY KEY (id));
cqlsh> INSERT INTO test.complex_data (id, data) values(1, {1:'I''m fine'});
cqlsh> SELECT data from test.complex_data; data
------------------
{1: 'I''m fine'}