Inserir, atualizar e eliminar dados através da Google Cloud CLI

Esta página descreve como inserir, atualizar e eliminar dados através da ferramenta de linha de comandos gcloud.

Modificar dados com DML

Para executar declarações de linguagem de manipulação de dados (DML), use o comando gcloud spanner databases execute-sql . O exemplo seguinte adiciona uma nova linha à tabela Singers.

gcloud spanner databases execute-sql example-db --instance=test-instance \
    --sql="INSERT Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards')"

Para executar uma declaração DML particionada, use o comando gcloud spanner databases execute-sql com a opção --enable-partitioned-dml. O exemplo seguinte atualiza as linhas na tabela Albums.

gcloud spanner databases execute-sql example-db \
    --instance=test-instance --enable-partitioned-dml \
    --sql='UPDATE Albums SET MarketingBudget = 0 WHERE MarketingBudget IS NULL'

Para a referência da DML do Spanner, consulte a sintaxe da linguagem de manipulação de dados.

Modificar linhas através do grupo de comandos rows

Use o grupo de comandos gcloud spanner rows para modificar dados numa base de dados:

  • Inserir novas linhas numa tabela.
  • Atualizar colunas em linhas existentes numa tabela.
  • Eliminar linhas de uma tabela.

O grupo de comandos rows reconhece literais para todos os tipos de colunas válidos.

Insira uma linha numa tabela

Para inserir uma nova linha numa tabela, tem de incluir valores para as colunas principais e quaisquer outras colunas obrigatórias:

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

O exemplo seguinte insere uma nova linha na tabela Singers:

gcloud spanner rows insert --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,FirstName='Marc',LastName='Richards'

Atualize uma linha numa tabela

Para atualizar uma linha numa tabela, tem de incluir valores para as colunas principais e as colunas que quer atualizar:

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

O exemplo seguinte atualiza uma linha na tabela Singers:

gcloud spanner rows update --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,FirstName='Marc',LastName='Richards'

Não pode alterar os valores das chaves através do comando update. Para atualizar um valor-chave, tem de criar uma nova linha e eliminar a linha existente.

Elimine uma linha de uma tabela

Para eliminar uma linha, tem de especificar os valores das colunas da chave primária:

gcloud spanner rows delete --instance=INSTANCE_ID --database=DATABASE_ID  \
    --table=TABLE_NAME \
    --keys=KEY_VALUE_1,KEY_VALUE_2,KEY_VALUE_3
O exemplo seguinte elimina uma linha da tabela `Singers`:
gcloud spanner rows delete --instance=test-instance --database=example-db \
    --table=Singers \
    --keys=1

Especifique valores ARRAY

Para inserir ou atualizar valores numa colunaARRAY, coloque os dados num ficheiro YAML e use a opção --flags-file.

Por exemplo, este ficheiro YAML especifica a matriz [1,2,3] para a Numberscoluna:

# stats.yaml
--data:
    Id: 1
    Locked: True
    Numbers:
        - 1
        - 2
        - 3

Para inserir uma linha com os dados YAML, use a opção --flags-file:

gcloud spanner rows insert --instance=test-instance --database=example-db \
     --table=Stats \
     --flags-file stats.yaml

Para uma matriz NULL, não inclua um valor para Numbers no ficheiro:

# stats.yaml
--data:
    Id: 1
    Locked: True

Para uma matriz vazia, defina a matriz como []:

# stats.yaml
--data:
    Id: 1
    Locked: True
    Numbers: []

Especifique as indicações de tempo de confirmação

Para inserir ou atualizar automaticamente um valor numa coluna de data/hora de confirmação, transmita spanner.commit_timestamp() como o valor da coluna. O exemplo seguinte escreve a data/hora de confirmação na coluna LastUpdated quando a linha é inserida.

gcloud spanner rows insert --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,LastUpdated='spanner.commit_timestamp()'

O exemplo seguinte escreve um valor de data/hora específico na coluna LastUpdated:

gcloud spanner rows update --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,LastUpdated=2017-01-02T12:34:00.45Z