Inserimento, aggiornamento ed eliminazione dei dati utilizzando Google Cloud CLI

In questa pagina viene descritto come inserire, aggiornare ed eliminare i dati utilizzando lo strumento a riga di comando gcloud.

Modifica dei dati utilizzando 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 nella tabella Albums.

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 DML di Spanner, consulta la pagina Sintassi del linguaggio di manipolazione dei dati.

Modificare le righe tramite 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.
  • Elimina le righe da una tabella.

Il gruppo di comandi rows riconosce i valori letterali per tutti i tipi di colonna validi.

Inserisci una riga in una tabella

Per inserire una nuova riga in una tabella, devi includere i valori per le colonne chiave ed eventuali 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'

Aggiorna una riga in una tabella

Per aggiornare una riga in una tabella, devi includere i valori per le colonne chiave e 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 delle chiavi utilizzando il comando update. Per aggiornare una coppia chiave-valore, 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 di 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
L'esempio seguente elimina una riga dalla tabella "Singers":
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 timestamp di commit

Per inserire o aggiornare automaticamente un valore in una colonna di timestamp del commit, trasmetti spanner.commit_timestamp() come valore della colonna. L'esempio seguente scrive il timestamp del commit nella colonna LastUpdated quando la riga viene inserita.

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 di 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