COPY FROM
CSVファイルのデータをテーブルにインポートします。
カンマ区切り値(CSV)ファイルまたは区切りテキスト・ファイルのデータを既存のテーブルにインポートします。ソース・ファイル内の各行が行としてインポートされます。データセット内のすべての行に同じ数のフィールドが含まれており、PRIMARY KEYフィールドに値が存在する必要があります。
このプロセスはPRIMARY KEYを確認し、既存のレコードを更新します。HEADER = false
で、カラム名が指定されていない場合は、フィールドが決定論的な順番でインポートされます。HEADER = true
の場合、ファイルの最初の行がヘッダー行になります。
構文
COPY table_name [ ( column_list ) ] FROM 'file_name'[ , 'file2_name', ... ] | STDIN [ 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
- 千桁の区切り文字。
デフォルト:
なし
- CHUNKSIZE
- ワーカー・プロセスに渡されるチャンク・サイズ。
デフォルト:
1000
- INGESTRATE
- おおよその1秒あたりの行内の取り込み速度。チャンク・サイズよりも大きい必要があります。
デフォルト:
100000
- MAXBATCHSIZE
- インポートバッチの最大サイズ。
デフォルト:
20
- MAXINSERTERRORS
- 挿入エラーの最大グローバル数。最大サイズが指定されていない場合は「
-1
」を使用します。デフォルト:
-1
- MAXPARSEERRORS
- 解析エラーの最大サイズ。最大サイズが指定されていない場合は「
-1
」を使用します。デフォルト:
-1
- MAXROWS
- 行の最大数。最大サイズが指定されていない場合は「
-1
」を使用します。デフォルト:
-1
- MINBATCHSIZE
- インポート・バッチの最小サイズ。
デフォルト:
2
例
サンプル・データセットの作成
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)