cqlsh:CQLシェル
cqlsh
は、CQL(Cassandraクエリ言語)を使用してCassandraと対話するためのコマンドラインインターフェースです。すべてのCassandraパッケージに同梱されており、cassandra実行可能ファイルとともにbin/ディレクトリにあります。cqlsh
はPythonネイティブプロトコルドライバで実装されており、指定された単一ノードに接続します。
互換性
一般的に、特定のバージョンのcqlsh
は、リリースされたCassandraバージョンでのみ動作することが保証されています。場合によっては、cqlsh
が古いまたは新しいバージョンのCassandraで動作することがありますが、これは正式にはサポートされていません。
オプションの依存関係
cqlsh
には、すべての必須依存関係が含まれています。ただし、cqlsh
の機能を向上させるためにインストールできるオプションの依存関係がいくつかあります。
cython
cqlsh
のCOPY
操作のパフォーマンスは、cythonをインストールすることで向上させることができます。これにより、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 [options] [host [port]]
Apache Cassandra用CQLシェル
オプション
--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
-
指定された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
リストされたトークンとkeyspaceのレプリカであるCassandraノードのIPアドレスを表示します。このコマンドはCassandra 4.2以降で使用できます。
使用方法
:SHOW REPLICAS <トークン> (<keyspace>)
使用例
cqlsh> SHOW REPLICAS 95
['192.0.0.1', '192.0.0.2']
SHOW SESSION
特定のトレースセッションをきれいに表示します。
使用方法
:SHOW 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
読み込みクエリに対するページングを有効化、無効化、またはページサイズの設定を行います。ページングが有効な場合、一度に1ページのデータのみがフェッチされ、次のページをフェッチするためのプロンプトが表示されます。大量のデータを一度にフェッチして出力することを避けるため、対話型セッションでは一般的にページングを有効にしておくことをお勧めします。
使用方法
:
PAGING ON
PAGING OFF
PAGING <page size in rows>
EXPAND
行の垂直方向の出力の有効化または無効化を行います。多くの列がフェッチされる場合、または単一の列の内容が大きい場合に、EXPAND
を有効にすると便利です。
使用方法
:
EXPAND ON
EXPAND OFF
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>
どのコマンドでも、DESCRIBE
の代わりにDESC
を使用できます。
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ファイルにコピーされます。コピーする列のサブセットは、テーブル名の後に括弧で囲まれたカンマ区切りの列名のリストを追加することで指定できます。
<ファイル名>
は、宛先ファイルへのパスを表す文字列リテラル(シングルクォート付き)である必要があります。これは、CSVを標準出力に出力するための特別な値STDOUT
(シングルクォートなし)にもできます。
COPY TO
とCOPY FROM
の両方に適用されるオプションについては、shared-copy-options
を参照してください。
COPY TO
のオプション
MAXREQUESTS
-
同時にフェッチするトークン範囲の最大数。デフォルトは6です。
PAGESIZE
-
1ページでフェッチする行数。デフォルトは1000です。
PAGETIMEOUT
-
デフォルトでは、ページタイムアウトはページサイズに1000エントリごとに10秒、ページサイズがそれより小さい場合は10秒です。
BEGINTOKEN
、ENDTOKEN
-
エクスポートするトークン範囲。デフォルトでは、リング全体をエクスポートします。
MAXOUTPUTSIZE
-
行数で測定した出力ファイルの最大サイズ。この最大サイズを超えると、出力ファイルはセグメントに分割されます。-1は無制限で、デフォルトです。
ENCODING
-
文字に使用されるエンコーディング。デフォルトは
utf8
です。
COPY FROM
CSVファイルからテーブルにデータをコピーします。
使用方法
:
COPY <table name> [(<column>, ...)] FROM <file name> WITH <copy option> [AND <copy option> ...]
列が指定されていない場合、CSVファイルのすべての列がテーブルにコピーされます。コピーする列のサブセットは、テーブル名の後に括弧で囲まれたカンマ区切りの列名のリストを追加することで指定できます。
<ファイル名>
は、ソースファイルへのパスを表す文字列リテラル(シングルクォート付き)である必要があります。これは、CSVデータを標準入力から読み取るための特別な値STDIN
(シングルクォートなし)にもできます。
COPY TO
とCOPY FROM
の両方に適用されるオプションについては、shared-copy-options
を参照してください。
COPY FROM
のオプション
INGESTRATE
-
1秒間に処理する行数の最大数。デフォルトは100000です。
MAXROWS
-
インポートする行数の最大数。-1は無制限で、デフォルトです。
SKIPROWS
-
スキップする最初の行の数。デフォルトは0です。
SKIPCOLS
-
無視する列名のカンマ区切りのリスト。デフォルトでは、列はスキップされません。
MAXPARSEERRORS
-
無視する構文解析エラーのグローバルな最大数。-1は無制限で、デフォルトです。
MAXINSERTERRORS
-
無視する挿入エラーのグローバルな最大数。-1は無制限です。デフォルトは1000です。
ERRFILE
=-
インポートできなかったすべての行を格納するファイル。デフォルトでは、
import_<ks>_<table>.err
です。ここで、<ks>
はキースペース、<table>
はテーブル名です。 MAXBATCHSIZE
-
1つのバッチで挿入される行数の最大数。デフォルトは20です。
MINBATCHSIZE
-
1つのバッチで挿入される行数の最小数。デフォルトは10です。
CHUNKSIZE
-
メインプロセスから子ワーカープロセスに一度に渡される行数。デフォルトは5000です。
共有COPYオプション
COPY TO
とCOPY FROM
の両方に共通するオプションです。
NULLVAL
-
NULL値の文字列プレースホルダー。デフォルトは
null
です。 HEADER
-
COPY TO
では、CSV出力ファイルの最初の行に列名を含めるかどうかを制御します。COPY FROM
では、CSV入力ファイルの最初の行に列名が含まれているかどうかを指定します。デフォルトはfalse
です。 DECIMALSEP
-
小数点セパレータとして使用される文字。デフォルトは
.
です。 THOUSANDSSEP
-
千単位のセパレータとして使用される文字。デフォルトは空文字列です。
BOOLSTYLE
-
ブール値の文字列リテラル形式。デフォルトは
True,False
です。 NUMPROCESSES
-
COPY
タスクのために作成する子ワーカープロセスの数。COPY
タスクの場合はデフォルトで16です。ただし、最大で(コア数 - 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'}