Cassandra ドキュメント

バージョン

プレリリースバージョンのドキュメントを表示しています。

cqlsh:CQLシェル

cqlsh は、CQL(Cassandraクエリ言語)を使用してCassandraと対話するためのコマンドラインインターフェースです。すべてのCassandraパッケージに同梱されており、cassandra実行可能ファイルとともにbin/ディレクトリにあります。cqlshはPythonネイティブプロトコルドライバで実装されており、指定された単一ノードに接続します。

互換性

一般的に、特定のバージョンのcqlshは、リリースされたCassandraバージョンでのみ動作することが保証されています。場合によっては、cqlshが古いまたは新しいバージョンのCassandraで動作することがありますが、これは正式にはサポートされていません。

オプションの依存関係

cqlshには、すべての必須依存関係が含まれています。ただし、cqlshの機能を向上させるためにインストールできるオプションの依存関係がいくつかあります。

pytz

デフォルトでは、cqlshはすべてのタイムスタンプをUTCタイムゾーンで表示します。Python 3.9以降では、cqlshrctimezoneオプションを変更するか、環境変数TZを設定することで、異なるタイムゾーンでタイムスタンプを表示できます。ただし、Python 3.8以前は、pytzライブラリのインストールも必要です。

cython

cqlshCOPY操作のパフォーマンスは、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条件付きの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

リストされたトークンと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

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>

どのコマンドでも、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 TOCOPY FROMの両方に適用されるオプションについては、shared-copy-optionsを参照してください。

COPY TOのオプション

MAXREQUESTS

同時にフェッチするトークン範囲の最大数。デフォルトは6です。

PAGESIZE

1ページでフェッチする行数。デフォルトは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ファイルのすべての列がテーブルにコピーされます。コピーする列のサブセットは、テーブル名の後に括弧で囲まれたカンマ区切りの列名のリストを追加することで指定できます。

<ファイル名>は、ソースファイルへのパスを表す文字列リテラル(シングルクォート付き)である必要があります。これは、CSVデータを標準入力から読み取るための特別な値STDIN(シングルクォートなし)にもできます。

COPY TOCOPY 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 TOCOPY 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'}