Questa pagina descrive come inserire, aggiornare ed eliminare i dati utilizzando lo strumento a riga di comando gcloud
.
Modifica dei dati mediante DML
Per eseguire istruzioni DML (Data Manipulation Language), utilizza il comando gcloud spanner databases execute-sql
. L'esempio seguente aggiunge una nuova riga alla tabella Singers
.
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="INSERT Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards')"
Per eseguire un'istruzione DML partizionata, utilizza il comando gcloud spanner databases execute-sql
con l'opzione --enable-partitioned-dml
. L'esempio seguente aggiorna le righe della tabellaAlbums
.
gcloud spanner databases execute-sql example-db \ --instance=test-instance --enable-partitioned-dml \ --sql='UPDATE Albums SET MarketingBudget = 0 WHERE MarketingBudget IS NULL'
Per il riferimento al DML di Spanner, consulta Sintassi del linguaggio di manipolazione dei dati.
Modificare le righe utilizzando il gruppo di comandi righe
Utilizza il gruppo di comandi gcloud spanner rows
per modificare i dati in un database:
- Inserisci nuove righe in una tabella.
- Aggiorna le colonne nelle righe esistenti di una tabella.
- Eliminare righe da una tabella.
Il gruppo di comandi rows
riconosce i valori letterali per tutti
i tipi di colonne validi.
Inserire una riga in una tabella
Per inserire una nuova riga in una tabella, devi includere i valori per le colonne chiave e per tutte le altre colonne obbligatorie:
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
Nell'esempio seguente viene inserita una nuova riga nella tabella Singers
:
gcloud spanner rows insert --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,FirstName='Marc',LastName='Richards'
Aggiornare una riga in una tabella
Per aggiornare una riga in una tabella, devi includere i valori per le colonne chiave e per le colonne che vuoi aggiornare:
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
L'esempio seguente aggiorna una riga nella tabella Singers
:
gcloud spanner rows update --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,FirstName='Marc',LastName='Richards'
Non puoi modificare i valori chiave utilizzando il comando update
. Per aggiornare un valore della chiave, devi creare una nuova riga ed eliminare quella esistente.
Eliminare una riga da una tabella
Per eliminare una riga, devi specificare i valori per le colonne della chiave primaria:
gcloud spanner rows delete --instance=INSTANCE_ID --database=DATABASE_ID \ --table=TABLE_NAME \ --keys=KEY_VALUE_1,KEY_VALUE_2,KEY_VALUE_3
gcloud spanner rows delete --instance=test-instance --database=example-db \ --table=Singers \ --keys=1
Specifica i valori ARRAY
Per inserire o aggiornare i valori in una colonna ARRAY
, inserisci i dati in un file YAML e utilizza l'opzione --flags-file
.
Ad esempio, questo file YAML specifica l'array [1,2,3]
per la colonna Numbers
:
# stats.yaml
--data:
Id: 1
Locked: True
Numbers:
- 1
- 2
- 3
Per inserire una riga con i dati YAML, utilizza l'opzione --flags-file
:
gcloud spanner rows insert --instance=test-instance --database=example-db \ --table=Stats \ --flags-file stats.yaml
Per un array NULL
, non includere un valore per Numbers
nel file:
# stats.yaml
--data:
Id: 1
Locked: True
Per un array vuoto, definisci l'array come []
:
# stats.yaml
--data:
Id: 1
Locked: True
Numbers: []
Specifica i timestamp dei commit
Per inserire o aggiornare automaticamente un valore in una colonna
timestamp di commit, passa
spanner.commit_timestamp()
come valore della colonna. L'esempio seguente scrive il timestamp del commit nella colonna LastUpdated
quando viene inserita la riga.
gcloud spanner rows insert --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,LastUpdated='spanner.commit_timestamp()'
L'esempio seguente scrive un valore timestamp specifico nella colonna LastUpdated
:
gcloud spanner rows update --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,LastUpdated=2017-01-02T12:34:00.45Z