Cassandra 文件

版本

您正在檢視預發行版本的說明文件。

cqlsh:CQL shell

cqlsh 是使用 CQL(Cassandra 查詢語言)與 Cassandra 互動的命令列介面。它隨附在每個 Cassandra 套件中,可以在 bin/ 目錄中找到,與 cassandra 可執行檔並列。cqlsh 是使用 Python 原生通訊協定驅動程式實作,並連線到指定的單一節點。

相容性

一般而言,特定版本的 cqlsh 僅保證與其發布的 Cassandra 版本相容。在某些情況下,cqlsh 可能與較舊或較新的 Cassandra 版本相容,但這並未獲得官方支援。

選用相依性

cqlsh 隨附所有必要的相依性。但是,有些選用相依性可以安裝以改善 cqlsh 的功能。

pytz

預設情況下,cqlsh 會顯示所有時間戳記,時區為 UTC。對於 Python 3.9 或更高版本,可以在 cqlshrc 中修改 timezone 選項,或設定環境變數 TZ,以不同時區顯示時間戳記。但是,Python 3.8 或更低版本也需要安裝 pytz 函式庫。

cython

安裝 cython 可以提升 cqlsh 的 COPY 作業效能。這將編譯對 COPY 效能至關重要的 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 條件的 INSERTUPDATEDELETE)。對於這些條件式更新,序號一致性層級會定義序號階段(或「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>

TRACING

啟用或停用查詢追蹤。當追蹤啟用時,一旦查詢完成,將會列印查詢期間事件的追蹤。

用法:

TRACING ON
TRACING OFF

PAGING

啟用分頁、停用分頁或設定讀取查詢的分頁大小。當分頁啟用時,一次只會擷取一頁資料,並會出現提示,以擷取下一頁。一般來說,最好在互動式會話中保持分頁啟用,以避免一次擷取和列印大量資料。

用法:

PAGING ON
PAGING OFF
PAGING <page size in rows>

EXPAND

啟用或停用列的垂直列印。當擷取許多欄或單一欄的內容很大時,啟用 EXPAND 會很有用。

用法:

EXPAND ON
EXPAND OFF

LOGIN

驗證為目前階段指定之 Cassandra 使用者。

用法:

LOGIN <username> [<password>]

EXIT

結束目前階段並終止 cqlsh 程序。

用法:

EXIT
QUIT

CLEAR

清除主控台。

用法:

CLEAR
CLS

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 TOCOPY FROM 的選項。

COPY TO 的選項

MAXREQUESTS

同時擷取的令牌範圍最大數目。預設為 6。

PAGESIZE

在單一頁面中擷取的列數。預設為 1000。

PAGETIMEOUT

預設情況下,頁面逾時時間為每頁面 1000 個條目 10 秒,或如果頁面大小較小,則為 10 秒。

BEGINTOKENENDTOKEN

要匯出的令牌範圍。預設為匯出完整環。

MAXOUTPUTSIZE

以行數衡量的輸出檔案最大大小;超過此最大值,輸出檔案將會分割成多個區段。-1 表示無限制,且為預設值。

ENCODING

用於字元的編碼。預設為 utf8

COPY FROM

將資料從 CSV 檔案複製到資料表。

用法:

COPY <table name> [(<column>, ...)] FROM <file name> WITH <copy option> [AND <copy option> ...]

如果未指定任何欄位,則會將 CSV 檔案中的所有欄位複製到資料表。可以在資料表名稱後加上以逗號分隔的欄位名稱清單(用括號括起來),以指定要複製的欄位子集。

<檔案名稱> 應為字串文字(帶有單引號),用於表示來源檔案的路徑。這也可以是特殊值 STDIN(沒有單引號),用於從標準輸入讀取 CSV 資料。

請參閱 shared-copy-options,以取得適用於 COPY TOCOPY 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 TOCOPY 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'}