COPY FROM

CSVファイルのデータをテーブルにインポートします。

カンマ区切り値(CSV)ファイルまたは区切りテキスト・ファイルのデータを既存のテーブルにインポートします。ソース・ファイル内の各行が行としてインポートされます。データセット内のすべての行に同じ数のフィールドが含まれており、PRIMARY KEYフィールドに値が存在する必要があります。

このプロセスはPRIMARY KEYを確認し、既存のレコードを更新します。HEADER = falseで、カラム名が指定されていない場合は、フィールドが決定論的な順番でインポートされます。HEADER = trueの場合、ファイルの最初の行がヘッダー行になります。

注: 200万行未満のデータセットをインポートする場合のみ、COPY FROMを使用してください。大きなデータセットをインポートするには、sstableloaderを使用します。

構文

COPY table_name [ ( column_list ) ]
  FROM 'file_name'[ , 'file2_name', ... ] | STDIN
  [ WITH option = 'value' [ AND ... ] ]      
注: COPYは、1つ以上のファイル名またはpython glob式のコンマ区切りリストをサポートしています。
1. 凡例
構文規則 説明
大文字 リテラル・キーワード。
小文字 リテラル以外。
イタリック体 変数値。ユーザー定義値と置き換えます。
[] 任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。
( ) グループ。丸かっこ(( ))は、選択肢を含むグループを示します。丸かっこは入力しないでください。
| または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。
... 繰り返し可能。省略記号(...)は、構文要素を必要な回数だけ繰り返すことができることを示します。
'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,noYES,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コマンドの例に使用する環境を設定します。

  1. CQLを使用して、cyclingキースペースを作成します。
    CREATE KEYSPACE cycling
    WITH REPLICATION = { 
      'class' : 'NetworkTopologyStrategy', 
      'datacenter1' : 1 
    };
  2. cycling.cyclist_nameテーブルを作成します。
    CREATE TABLE cycling.cyclist_name ( 
      id UUID PRIMARY KEY, 
      lastname text, 
      firstname text 
    );
  3. データを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テーブルに対するデータのエクスポートおよびインポート

  1. 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.
  2. idfirstnameを、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.
  3. すべてのレコードをサイクリスト名テーブルから削除します。
    TRUNCATE cycling.cyclist_name;
  4. 行が存在しないことを確認します。
    SELECT *
    FROM cycling.cyclist_name;

    クエリー結果は空です。

     id | firstname | lastname
    ----+-----------+----------
        
    (0 rows)
  5. サイクリストの名をインポートします。
    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).
  6. 新しい行を確認します。
    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)
  7. 姓をインポートします。
    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).
  8. レコードが更新されたことを確認します。
    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

標準入力からテーブルにデータをコピーします。

  1. cyclist_nameテーブルからデータを消去します。
    TRUNCATE cycling.cyclist_name;
  2. 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] 
  3. [copy]プロンプトの次にフィールド値のコンマ区切りリストを入力します。データの最終行にはピリオドを入力します。
    [copy] e7cd5752-bc0d-4157-a80f-7523add8dbcd,Anna,VAN DER BREGGEN
    [copy] .
  4. 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).
  5. レコードがインポートされたことを確認します。
    SELECT *
    FROM cycling.cyclist_name;
     id                                   | firstname | lastname
    --------------------------------------+-----------+-----------------
     e7cd5752-bc0d-4157-a80f-7523add8dbcd |      Anna | VAN DER BREGGEN
      
    (1 rows)