COPY TO
テーブルのデータをCSVファイルにエクスポートします。
テーブルのデータをカンマ区切り値(CSV)ファイルまたは区切りテキスト・ファイルにエクスポートします。各行は区切り文字で区切られたフィールドを含むターゲット・ファイル内の行に書き込まれます。
構文
COPY table_name [ ( column_list ) ] TO 'file_name' [ , 'file2_name', ... ] | STDOUT [ WITH option = 'value' [ AND ... ] ]
| 構文規則 | 説明 |
|---|---|
| 大文字 | リテラル・キーワード。 |
| 小文字 | リテラル以外。 |
イタリック体 |
変数値。ユーザー定義値と置き換えます。 |
[] |
任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。 |
( ) |
グループ。丸かっこ(( ))は、選択肢を含むグループを示します。丸かっこは入力しないでください。 |
| |
または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。 |
... |
繰り返し可能。省略記号(...)は、構文要素を必要な回数だけ繰り返すことができることを示します。 |
'Literal string' |
単一引用符( ' )でCQL文内のリテラル文字を囲みます。大文字を維持するには、単一引用符を使用します。 |
{ key : value } |
マップ・コレクション。中かっこ( { } )でマップ・コレクションまたはキーと値のペアを囲みます。コロンでキーと値を区切ります。 |
<datatype1,datatype2> |
セット、リスト、マップ、またはタプル。山かっこ(< >)で、セット、リスト、マップまたはタプル内のデータ型を囲みます。データ型はコンマで区切ります。 |
cql_statement; |
CQL文の終了。セミコロン( ; )ですべてのCQL文を終了します。 |
[--] |
コマンドライン・オプションとコマンド引数は、2つのハイフン(--)。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。 |
' <schema> ... </schema> ' |
検索CQLのみ:単一引用符( ' )でXMLスキーマ宣言全体を囲みます。 |
@xml_entity='xml_entity_type' |
検索CQLのみ:スキーマ・ファイルおよびsolrConfigファイル内のXML要素を上書きするための実体とリテラル値を示します。 |
コピー・オプションの設定
COPY文で設定されているコピー・オプションは、cqlshrcファイルとデフォルト設定よりも優先されます。オプションがコマンドラインで設定されていない場合は、cqlshrcファイルがデフォルト設定よりも優先されます。
- table_name
- コピー操作用のテーブル。
- column_list
- テーブルのカラムのリスト。カラム名が指定されない場合、すべてのフィールドが含まれます。カラムを省略するには、含めるカラムと共にカラム・リストを指定します。
- file_name, file2_name
- CSVファイル名。
- BOOLSTYLE
- TrueとFalseのブーリアン標識。値の大文字と小文字は区別されません。たとえば、
yes,noとYES,NOは同じです。デフォルト:
True,False - CONFIGFILE
cqlshrc構成ファイルを含むディレクトリー。注: コマンドライン・オプションは、常にcqlshrcファイルをオーバーライドします。- DATETIMEFORMAT
- CSV時間データの読み取りまたは書き込みの時間形式。タイムスタンプはstrftime形式を使用します。設定されていない場合、デフォルト値はcqlshrcファイルの
datetimeformat値に設定されます。デフォルト:
%Y-%m-%d %H:%M:%S%z - DECIMALSEP
- 10進数の小数点。
デフォルト:
.(ピリオド) - DELIMITER
- フィールド区切り文字。
デフォルト:
,(コンマ) - ESCAPE
- QUOTE文字のリテラル使用をエスケープする単一の文字。
デフォルト:
\(バックスラッシュ) - HEADER
-
true- 最初の行にヘッダー(カラム名)が含まれます。false- 最初の行にヘッダーが含まれません。
デフォルト:
false - MAXATTEMPTS
- エラー時の最大試行回数。
デフォルト:
5 - NULL
- フィールド内に値が存在しない場合に使用される値。
デフォルト:
<空> - NUMPROCESSES
- ワーカー・プロセスの数。最大値は16です。
デフォルト:
-1 - QUOTE
- フィールド値を囲みます。
デフォルト:"(二重引用符)
- REPORTFREQUENCY
- ステータスが表示される頻度(秒単位)。
デフォルト:
0.25 - RATEFILE
- 出力統計をこのファイルに出力します。
- SKIPCOLS
- スキップするカラムの名前。
- SKIPROWS
- スキップするデータの最初の行から開始する行の数。
- THOUSANDSSEP
- 千桁の区切り文字。
デフォルト:
なし
- BEGINTOKEN
- データのエクスポート用の最小トークン文字列。
- DOUBLEPRECISION
- CQL倍精度値の小数点の後に表示される桁数を設定します。
デフォルト:
12 - ENCODING
- 出力文字列型。
デフォルト:
UTF8 - ENDTOKEN
- データのエクスポート用の最大トークン文字列。
- ERRFILE
- インポートされていないすべての行を格納するファイル。値が設定されていない場合、情報はimport_ks_table.errに格納されます。ここで、ksはキースペース、tableはテーブル名です。
- FLOATPRECISION
- CQL float(単精度)値の小数点の後に表示される桁数を設定します。
デフォルト:
5 - MAXOUTPUTSIZE
- 行数で測定される、出力ファイルの最大サイズ。設定されている場合、出力ファイルのサイズがその値を超えるとセグメントに分割されます。最大サイズが指定されていない場合は「
-1」を使用します。デフォルト:
-1 - MAXREQUESTS
- 各ワーカーが並列処理できる要求の最大数。
デフォルト:
6 - PAGESIZE
- 結果のフェッチ用のページ・サイズ。
デフォルト:
1000 - PAGETIMEOUT
- 結果のフェッチ用のページ・タイムアウト。
デフォルト:
10 - TTL
- 秒単位のTime To Live。デフォルトでは、データは期限切れになりません。
デフォルト:
3600
例
サンプル・データセットの作成
COPYコマンドの例に使用する環境を設定します。
- CQLを使用して、
cyclingキースペースを作成します。CREATE KEYSPACE cycling WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 }; cycling.cyclist_nameテーブルを作成します。CREATE TABLE cycling.cyclist_name ( id UUID PRIMARY KEY, lastname text, firstname text );
- データを
cycling.cyclist_nameに挿入します。INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (5b6962dd-3f90-4c93-8f61-eabfa4a803e2, 'VOS','Marianne'); INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (e7cd5752-bc0d-4157-a80f-7523add8dbcd, 'VAN DER BREGGEN','Anna'); INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (e7ae5cf3-d358-4d99-b900-85902fda9bb0, 'FRAME','Alex'); INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (220844bf-4860-49d6-9a4b-6b5d3a79cbfb, 'TIRALONGO','Paolo'); INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47, 'KRUIKSWIJK','Steven'); INSERT INTO cycling.cyclist_name (id, lastname, firstname) VALUES (fb372533-eb95-4bb4-8685-6ef61e994caa, 'MATTHEWS', 'Michael');
cyclist_nameテーブルからのデータのエクスポート
cyclist_nameテーブルのidおよびlastnameカラムのみをCSVファイルにエクスポートします。COPY cycling.cyclist_name (id,lastname) TO '../cyclist_lastname.csv' WITH HEADER = TRUE;
cyclist_lastname.csvファイルが現在の作業ディレクトリー(../で示されています)の上のディレクトリーに作成されます。CSVファイルが既に存在する場合は上書きされます。
Using 7 child processes Starting copy of cycling.cyclist_name with columns [id, lastname]. Processed: 6 rows; Rate: 29 rows/s; Avg. rate: 29 rows/s 6 rows exported to 1 files in 0.223 seconds.idとfirstnameを、cyclist_firstname.csvという名前の別のCSVファイルにコピーします。COPY cycling.cyclist_name (id,firstname) TO '../cyclist_firstname.csv' WITH HEADER = TRUE;
CSVファイルが作成されます。
Using 7 child processes Starting copy of cycling.cyclist_name with columns [id, firstname]. Processed: 6 rows; Rate: 30 rows/s; Avg. rate: 30 rows/s 6 rows exported to 1 files in 0.213 seconds.- すべてのレコードをサイクリスト名テーブルから削除します。
TRUNCATE cycling.cyclist_name;
- 行が存在しないことを確認します。
SELECT * FROM cycling.cyclist_name;
クエリー結果は空です。
id | firstname | lastname ----+-----------+---------- (0 rows) - サイクリストの名をインポートします。
COPY cycling.cyclist_name (id,firstname) FROM '../cyclist_firstname.csv' WITH HEADER = TRUE;
行がインポートされます。
Using 7 child processes Starting copy of cycling.cyclist_name with columns [id, firstname]. Processed: 6 rows; Rate: 10 rows/s; Avg. rate: 14 rows/s 6 rows imported from 1 files in 0.423 seconds (0 skipped). - 新しい行を確認します。
SELECT * FROM cycling.cyclist_name;
lastnameフィールドがインポートしたデータ・セットに含まれていなかったため、姓にはnullが指定されて行が作成されました。id | firstname | lastname --------------------------------------+-----------+---------- e7ae5cf3-d358-4d99-b900-85902fda9bb0 | Alex | null fb372533-eb95-4bb4-8685-6ef61e994caa | Michael | null 5b6962dd-3f90-4c93-8f61-eabfa4a803e2 | Marianne | null 220844bf-4860-49d6-9a4b-6b5d3a79cbfb | Paolo | null 6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47 | Steven | null e7cd5752-bc0d-4157-a80f-7523add8dbcd | Anna | null (6 rows) - 姓をインポートします。
COPY cycling.cyclist_name (id,lastname) FROM '../cyclist_lastname.csv' WITH HEADER = TRUE;
レコードがインポートされますが、新しいレコードは作成されません。
Using 7 child processes Starting copy of cycling.cyclist_name with columns [id, lastname]. Processed: 6 rows; Rate: 10 rows/s; Avg. rate: 14 rows/s 6 rows imported from 1 files in 0.422 seconds (0 skipped). - レコードが更新されたことを確認します。
SELECT * FROM cycling.cyclist_name;
PRIMARY KEYである
idがすべてのレコードについて照合され、lastnameが自動入力されます。id | firstname | lastname --------------------------------------+-----------+----------------- e7ae5cf3-d358-4d99-b900-85902fda9bb0 | Alex | FRAME fb372533-eb95-4bb4-8685-6ef61e994caa | Michael | MATTHEWS 5b6962dd-3f90-4c93-8f61-eabfa4a803e2 | Marianne | VOS 220844bf-4860-49d6-9a4b-6b5d3a79cbfb | Paolo | TIRALONGO 6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47 | Steven | KRUIKSWIJK e7cd5752-bc0d-4157-a80f-7523add8dbcd | Anna | VAN DER BREGGEN
標準入力からテーブルへのデータのコピー
cyclist_nameテーブルからデータを消去します。TRUNCATE cycling.cyclist_name;
FROM STDINオプションを使用してコピー入力操作を開始します。COPY cycling.cyclist_name FROM STDIN;行のプロンプトが
[copy]に変わります。Using 7 child processes Starting copy of cycling.cyclist_name with columns [id, firstname, lastname]. [Use . on a line by itself to end input] [copy][copy]プロンプトの次にフィールド値のコンマ区切りリストを入力します。データの最終行にはピリオドを入力します。[copy] e7cd5752-bc0d-4157-a80f-7523add8dbcd,Anna,VAN DER BREGGEN [copy] .- Enterキーを押してレコードの処理を開始します。
Processed: 1 rows; Rate: 0 rows/s; Avg. rate: 0 rows/s 1 rows imported from 1 files in 36.991 seconds (0 skipped). - レコードがインポートされたことを確認します。
SELECT * FROM cycling.cyclist_name;
id | firstname | lastname --------------------------------------+-----------+----------------- e7cd5752-bc0d-4157-a80f-7523add8dbcd | Anna | VAN DER BREGGEN (1 rows)
