Nesta página, descrevemos como inserir, atualizar e excluir dados usando a ferramenta de linha de comando gcloud
.
Modificar dados usando a DML
Para executar instruções de linguagem de manipulação de dados (DML, na sigla em inglês), use o comando gcloud spanner databases execute-sql
. O exemplo a seguir 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 instrução DML particionada, use o comando gcloud spanner databases execute-sql
com a opção --enable-partitioned-dml
. O exemplo a seguir atualiza 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 acessar a referência de DML do Spanner, consulte Sintaxe da linguagem de manipulação de dados.
Modificar linhas usando o grupo de comandos de linhas
Use o grupo de comandos gcloud spanner rows
para modificar dados em um banco de dados:
- Inserir novas linhas em uma tabela.
- Atualizar colunas em linhas existentes em uma tabela.
- Excluir linhas de uma tabela.
O grupo de comandos rows
reconhece literais de todos os tipos de coluna válidos.
Inserir uma linha em uma tabela
Para inserir uma nova linha em uma tabela, é preciso incluir valores para as colunas de chave e para 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 a seguir 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'
Atualizar uma linha em uma tabela
Para atualizar uma linha em uma tabela, é preciso incluir valores para as colunas de chave e para as colunas que você 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 a seguir 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 é possível alterar os valores principais usando o comando update
. Para atualizar um valor de chave, é preciso criar uma nova linha e excluir a linha existente.
Excluir uma linha de uma tabela
Para excluir uma linha, você precisa especificar os valores para as colunas de 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
Especificar valores de matriz
Para inserir ou atualizar valores em uma coluna ARRAY
, coloque os dados em um arquivo YAML e use a opção --flags-file
.
Por exemplo, este arquivo YAML especifica a matriz [1,2,3]
para a coluna Numbers
:
# 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 arquivo:
# stats.yaml
--data:
Id: 1
Locked: True
Para uma matriz vazia, defina-a como []
:
# stats.yaml
--data:
Id: 1
Locked: True
Numbers: []
Especificar carimbos de data/hora de commit
Para inserir ou atualizar um valor automaticamente em uma coluna de carimbo de data/hora da confirmação, transmita spanner.commit_timestamp()
como o valor da coluna. O exemplo a seguir grava o carimbo de data/hora da 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 a seguir grava um valor de carimbo 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