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
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 Numbers
coluna:
# 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