Cassandraは、他のRDBMSのようなエクスポート/インポートツールを提供します。
- cqlshコマンドCOPY TO / FROM
これはcqlコマンドではないことに注意してください。この一連のコマンドを使用して、cassandraと他のRDBMSまたはcassandraの間でデータを移行します。COPY TO / FROMは、CSVファイル形式と標準出力および入力をサポートしています。
COPY TO / FROMコマンドは、集約データ型もサポートしています。 - sstable2json / json2sstable
このツールセットは古く、バージョン3.0では削除されています。したがって、このツールのグループを再度使用することはできません。
- sstableloader
Cassandraバルクローダーは、外部データをcassandraにロードできます。また、スナップショットを復元したり、sstableをさまざまな構成のcassandraクラスターにロードしたりすることもできます。
データ量が多い場合はsstableloaderを、データ量が比較的少ない場合はCOPY TO / FROMの方が時間と労力を節約できます。 - スナップショット
スナップショットは、Cassandraの本物のバックアップおよびリカバリツールであり、他のデータベースシステムとのデータ移行のためのツールではありません。厳密に言えば、それはエクスポート/インポートツールとしてカウントされるべきではありません。
- ETLツール
多くのサードパーティETL(Extract-Transform-Load)ツールは、他のデータベースからcassandraデータベースへのデータ移行をサポートしています。
コピー先/コピー元
ここでは、COPY TO / FROMコマンドについてのみ説明します。
コマンド形式:
1 2 3 4 5 6 7 |
|
COPY FROMはcsvファイルまたは標準入力からデータをテーブルにインポートするために使用され、COPY TOはテーブルデータをcsvファイルまたは標準出力にエクスポートするために使用されます。
WITH option = 'value'は、csvファイルの形式、区切り文字、引用符、転送文字、ファイルエンコーディング、時間形式などを指定するために使用されます。詳細については、公式ドキュメントを参照してください。
列名を指定しない場合、すべての列がテーブルメタデータにリストされている順序で出力されます。同様に、csvも同じ順序でデータを編成する場合、COPY FROM中にすべての列名を無視できます。
COPY TO / FROMでは、一部のデータのみをエクスポートおよびインポートする一部の列のみを指定でき、列名は任意の順序で指定できます。
データがテーブルにすでに存在する場合、COPY FROMは既存のデータを切り捨てません。
エクスポートされたデータの例:
1 2 |
|
インポートされたデータの例:
1 |
|
標準入力を使用し\.
てデータをインポートする場合は、文字のみを含む1行を使用 してデータ入力を終了します。
データのインポート時に次のエラーメッセージが表示された場合:
1 2 3 4 |
|
これは、csvファイルに大容量フィールドが含まれており、python csvモジュールがより大きなフィールドサイズ制限を設定する必要があるためです。
/usr/bin/cqlsh.pyファイルを変更し、csvモジュールをインポートした後、次の行を追加します。
1 |
|
注:カウンター列のあるテーブルでは、COPY TO / FROMを使用してデータをエクスポートおよびインポートできません。
参照:
[1] DataStax EnterpriseおよびCassandraとの間でデータを移動する方法
[2] 2.2でのsstable2json / json2sstableの廃止を検討してください
[3] _csv.Error:フィールドがフィールド制限を超えています(131072)
[4] cassandra データデータ移移