このページでは、gcloud
コマンドライン ツールを使用して、データを挿入、更新、削除する方法について説明します。
DML を使用してデータを変更する
データ操作言語(DML)ステートメントを実行するには、gcloud spanner databases execute-sql
コマンドを使用します。次の例では、Singers
テーブルに新しい行を追加します。
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="INSERT Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards')"
パーティション化 DML ステートメントを実行するには、--enable-partitioned-dml
オプションを指定した gcloud spanner databases execute-sql
コマンドを使用します。次の例では、Albums
テーブル内の行を更新します。
gcloud spanner databases execute-sql example-db \ --instance=test-instance --enable-partitioned-dml \ --sql='UPDATE Albums SET MarketingBudget = 0 WHERE MarketingBudget IS NULL'
Spanner DML のリファレンスについては、データ操作言語の構文をご覧ください。
rows コマンド グループを使用して行を変更する
gcloud spanner rows
コマンド グループを使用して、データベース内のデータを変更します。
- 新しい行をテーブルに挿入します。
- テーブル内の既存の行の列を更新します。
- テーブルから行を削除します。
rows
コマンド グループは、すべての有効な列型のリテラルを認識します。
テーブルへの行の挿入
テーブルに新しい行を挿入するには、キー列の値と、必要となるその他すべての列の値を含める必要があります。
gcloud spanner rows insert --instance=INSTANCE_ID --database=DATABASE_ID \ --table=TABLE_NAME \ --data=COL_NAME_1=COL_VALUE_1,COL_NAME_2=COL_VALUE_2,COL_NAME_3=COL_VALUE_3,...,COL_NAME_N=COL_VALUE_N
次の例では、Singers
テーブルに新しい行を挿入します。
gcloud spanner rows insert --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,FirstName='Marc',LastName='Richards'
テーブルの行の更新
テーブル内の行を更新するには、キー列の値と更新する列の値を含める必要があります。
gcloud spanner rows update --instance=INSTANCE_ID --database=DATABASE_ID \ --table=TABLE_NAME \ --data=COL_NAME_1=COL_VALUE_1,COL_NAME_2=COL_VALUE_2,COL_NAME_3=COL_VALUE_3,...,COL_NAME_N=COL_VALUE_N
次の例では、Singers
テーブルの行を更新します。
gcloud spanner rows update --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,FirstName='Marc',LastName='Richards'
update
コマンドを使用してキー値を変更することはできません。キー値を更新するには、新しい行を作成して既存の行を削除する必要があります。
テーブルからの行の削除
行を削除するには、主キー列の値を指定する必要があります。
gcloud spanner rows delete --instance=INSTANCE_ID --database=DATABASE_ID \ --table=TABLE_NAME \ --keys=KEY_VALUE_1,KEY_VALUE_2,KEY_VALUE_3次の例では、「Singers」テーブルから行を削除します。
gcloud spanner rows delete --instance=test-instance --database=example-db \ --table=Singers \ --keys=1
ARRAY 値の指定
ARRAY
列の値を挿入または更新するには、データを YAML ファイルに格納し、--flags-file
オプションを使用します。
たとえば、この YAML ファイルは Numbers
列に配列 [1,2,3]
を指定します。
# stats.yaml
--data:
Id: 1
Locked: True
Numbers:
- 1
- 2
- 3
YAML データを含む行を挿入するには、--flags-file
オプションを使用します。
gcloud spanner rows insert --instance=test-instance --database=example-db \ --table=Stats \ --flags-file stats.yaml
NULL
配列の場合、ファイルに Numbers
の値を含めないでください。
# stats.yaml
--data:
Id: 1
Locked: True
空の配列の場合、配列を []
として定義します。
# stats.yaml
--data:
Id: 1
Locked: True
Numbers: []
commit タイムスタンプの指定
commit タイムスタンプ列に値を自動的に挿入または更新するには、列の値として spanner.commit_timestamp()
を渡します。次の例では、行が挿入されたときに、commit タイムスタンプを LastUpdated
列に書き込みます。
gcloud spanner rows insert --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,LastUpdated='spanner.commit_timestamp()'
次の例では、LastUpdated
列に特定のタイムスタンプ値を書き込みます。
gcloud spanner rows update --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,LastUpdated=2017-01-02T12:34:00.45Z