INSERT
既存の行に行全体、またはupsertデータを挿入します。
既存の行に行全体、またはupsertデータを挿入します。文には完全なPrimary_keyを含める必要があります。プライマリ・キーのコンポーネントごとに値が必要ですが、他のカラムの値は必須ではありません。欠落しているカラムはデフォルトで未設定になり、データベースにトゥームストーンは作成されません。IF NOT EXISTSを使用した場合を除き、結果は返されません。
- INSERTではカウンター・カラムはサポートされていません。代わりにUPDATEを使用してください。
- PRIMARY KEYは、partition keyの後にクラスター化カラムが続きます。
構文
INSERT [ JSON ] INTO [keyspace_name.]table_name
[ column_list VALUES column_values ]
[ IF NOT EXISTS ]
[ USING [ TTL seconds ] [ [ AND ] TIMESTAMP epoch_in_microseconds ] ] ;
INSERT
コマンドまたはUPDATE
コマンドを使用してマテリアライズド・ビュー(MV)が含まれたベース・テーブルを変更する場合は、そのベース・テーブルに対するMODIFY
またはALL PERMISSIONS
がユーザーに与えられている必要があります。構文規則 | 説明 |
---|---|
大文字 | リテラル・キーワード。 |
小文字 | リテラル以外。 |
イタリック体 |
変数値。ユーザー定義値と置き換えます。 |
[] |
任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。 |
( ) |
グループ。丸かっこ(( ) )は、選択肢を含むグループを示します。丸かっこは入力しないでください。 |
| |
または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。 |
... |
繰り返し可能。省略記号(... )は、構文要素を必要な回数だけ繰り返すことができることを示します。 |
'Literal string' |
単一引用符( ' )でCQL文内のリテラル文字を囲みます。大文字を維持するには、単一引用符を使用します。 |
{ key : value } |
マップ・コレクション。中かっこ( { } )でマップ・コレクションまたはキーと値のペアを囲みます。コロンでキーと値を区切ります。 |
<datatype1,datatype2> |
セット、リスト、マップ、またはタプル。山かっこ(< > )で、セット、リスト、マップまたはタプル内のデータ型を囲みます。データ型はコンマで区切ります。 |
cql_statement; |
CQL文の終了。セミコロン( ; )ですべてのCQL文を終了します。 |
[--] |
コマンドライン・オプションとコマンド引数は、2つのハイフン(-- )。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。 |
' <schema> ... </schema> ' |
検索CQLのみ:単一引用符( ' )でXMLスキーマ宣言全体を囲みます。 |
@xml_entity='xml_entity_type' |
検索CQLのみ:スキーマ・ファイルおよびsolrConfigファイル内のXML要素を上書きするための実体とリテラル値を示します。 |
- column_list
- カラムのコンマ区切りリスト。PRIMARY KEYフィールドはすべて必須です。Nullはすべての静的カラムに挿入され、これらのカラムは除外されます。
- column_values
-
カラムごとに、対応する値のリストを入力します。column_listと同じ順序を使用します。
リテラルか、コレクションの次の構文を使用してデータを入力します。- セット:中かっこの中に値を入力します。
{ literal [, ...] }
という同等のHOCON構文でフォーマットされています。 - リスト:角かっこの中に値を入力します。
[literal [, ...]]
. - Map: 中かっこの中に値を入力します。
{ key : value [, ...] }
という同等のHOCON構文でフォーマットされています。
- セット:中かっこの中に値を入力します。
- TTL seconds
-
TTLを秒単位で設定します。TTLの期限が切れると、挿入したデータは自動的に削除済みとマークされます(トゥームストーン付き)。TTL設定は、カラム全体ではなく、挿入したデータにのみ適用されます。それ以降はカラムを更新するたびに、TTLがリセットされます。デフォルトでは、値は期限切れになりません。
テーブルのdefault_time_to_liveプロパティを設定すると、デフォルトのTTLをテーブル全体に設定できます。INSERTまたはUPDATEコマンドを使用してカラムにTTLを設定すると、テーブルTTLはオーバーライドされます。
警告: 2038年問題のため、データベース・ストレージ・エンジンでは、January 19 2038 03:14:07 UTC
のみをエンコードできます。TTL日付オーバーフローポリシーによって、有効期限が最長の日付よりも後のタイムスタンプの要求を拒否するか、受け入れるかどうかが決定します。-Dcassandra.expiration_date_overflow_policyを参照してください。 - IF NOT EXISTS
- PRIMARY KEY値に一致する行がない場合に、新しいデータ行を挿入します。
- TIMESTAMP epoch_in_microseconds
- 挿入したデータに書き込み時間の
TIMESTAMP
を付けます。エポック(1970年1月1日)以来の経過時間をマイクロ秒単位で入力します。デフォルトでは、書き込みの実際の時刻が使用されます。制約事項: INSERTでは、同じ文でIF NOT EXISTSとUSING TIMESTAMPを使用することはできません。
例
タイムスタンプとTime To Live(TTL)の指定
TTLとタイムスタンプの両方を使用してサイクリスト名を挿入します。
INSERT INTO cycling.cyclist_name ( id, lastname, firstname ) VALUES ( 6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47, 'KRUIKSWIJK', 'Steven' ) USING TTL 86400 AND TIMESTAMP 123456789;
- Time To Live(TTL、秒単位)
- エポック以来の経過マイクロ秒数のタイムスタンプ
コレクション内でのTime To Live(TTL)とタイムスタンプの指定。
sponsorship
セット・コレクションのTTLとタイムスタンプの両方を使用してサイクリスト名を挿入します。
INSERT INTO cycling.cyclist_sponsors_expire (cyclist_name, sponsorship) VALUES ('PRIETO, Marcela', {'Castrelli', 'Alfa Romeo'}) USING TIMESTAMP 100 AND TTL 10000;
- Time To Live(TTL、秒単位)
- エポック以来の経過マイクロ秒数のタイムスタンプ
コレクションへの値の挿入(セットとマップ)
set
としてチームのリストを挿入します。セットは、テーブル内でteams set<text>
として定義されます。INSERT INTO cycling.cyclist_career_teams ( id,lastname,teams ) VALUES ( 5b6962dd-3f90-4c93-8f61-eabfa4a803e2, 'VOS', { 'Rabobank-Liv Woman Cycling Team','Rabobank-Liv Giant','Rabobank Women Team','Nederland bloeit' } );
teams
という名前のmap
にデータを挿入します。このマップはサイクリストVOSについて直近の2つのチーム・メンバーシップをリストします。マップは、テーブル内でteams map<int, text>
として定義されます。INSERT INTO cycling.cyclist_teams ( id,firstname,lastname,teams ) VALUES ( 5b6962dd-3f90-4c93-8f61-eabfa4a803e2, 'Marianne', 'VOS', { 2015 : 'Rabobank-Liv Woman Cycling Team', 2014 : 'Rabobank-Liv Woman Cycling Team' } );
コレクション内の1つの項目のサイズは64Kに制限されています。
ユーザー定義型のコレクション・カラムにデータを挿入するには、「ユーザー定義型の使用」で示すように、丸かっこの中で、その型の構成要素を中かっこで囲みます。
行がまだ存在しない場合の行の挿入
IF NOT EXISTSをコマンドに追加して、同じプライマリ・キーを持つ行が既に存在する場合には操作が実行されないようにします。
INSERT INTO cycling.cyclist_name ( id, lastname, firstname ) VALUES ( c4b65263-fe58-4846-83e8-f0e1c13d518f, 'RATTO', 'Rissella' ) IF NOT EXISTS;
[applied]
-----------
True
[applied]
カラムの値false
と挿入されなかった値を含むテーブルが表示されます。 [applied] | id | firstname | lastname
-----------+--------------------------------------+-----------+----------
False | c4b65263-fe58-4846-83e8-f0e1c13d518f | Rissella | RATTO