Cette page explique comment insérer, mettre à jour et supprimer des données à l'aide de l'outil de ligne de commande gcloud
.
Modifier des données à l'aide de LMD
Pour exécuter des instructions LMD (langage de manipulation de données), utilisez la commande gcloud spanner databases execute-sql
. L'exemple suivant ajoute une ligne à la table Singers
.
gcloud spanner databases execute-sql example-db --instance=test-instance \ --sql="INSERT Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards')"
Pour exécuter une instruction en LMD partitionné, utilisez la commande gcloud spanner databases execute-sql
avec l'option --enable-partitioned-dml
. L'exemple suivant met à jour les lignes de la table Albums
.
gcloud spanner databases execute-sql example-db \ --instance=test-instance --enable-partitioned-dml \ --sql='UPDATE Albums SET MarketingBudget = 0 WHERE MarketingBudget IS NULL'
Pour en savoir plus sur le LMD de Spanner, consultez Syntaxe du langage de manipulation de données
Modifier des lignes à l'aide du groupe de commandes "rows"
Utilisez le groupe de commandes gcloud spanner rows
pour modifier les données d'une base de données :
- Insérer des lignes dans une table
- Mettre à jour les colonnes des lignes existantes d'une table
- Supprimer les lignes d'une table
Le groupe de commandes rows
reconnaît les littéraux de tous les types de colonnes valides.
Insérer une ligne dans une table
Pour insérer une ligne dans une table, vous devez inclure des valeurs pour les colonnes de clé et toutes les autres colonnes obligatoires :
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
L'exemple suivant insère une nouvelle ligne dans la table Singers
:
gcloud spanner rows insert --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,FirstName='Marc',LastName='Richards'
Mettre à jour une ligne dans une table
Pour mettre à jour une ligne dans une table, vous devez inclure des valeurs pour les colonnes de clé et les colonnes à mettre à jour :
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'exemple suivant met à jour une ligne de la table Singers
:
gcloud spanner rows update --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,FirstName='Marc',LastName='Richards'
Vous ne pouvez pas modifier les clés-valeurs à l'aide de la commande update
. Pour mettre à jour une valeur de clé, vous devez créer une ligne et supprimer la ligne existante.
Supprimer une ligne d'une table
Pour supprimer une ligne, vous devez spécifier les valeurs des colonnes de clé primaire :
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
Spécifier les valeurs ARRAY
Pour insérer ou mettre à jour des valeurs dans une colonne ARRAY
, placez les données dans un fichier YAML et utilisez l'option --flags-file
.
Par exemple, ce fichier YAML spécifie le tableau [1,2,3]
pour la colonne Numbers
:
# stats.yaml
--data:
Id: 1
Locked: True
Numbers:
- 1
- 2
- 3
Pour insérer une ligne comprenant les données YAML, utilisez l'option --flags-file
:
gcloud spanner rows insert --instance=test-instance --database=example-db \ --table=Stats \ --flags-file stats.yaml
Pour un tableau NULL
, n'incluez aucune valeur pour Numbers
dans le fichier :
# stats.yaml
--data:
Id: 1
Locked: True
Pour un tableau vide, définissez le tableau comme []
:
# stats.yaml
--data:
Id: 1
Locked: True
Numbers: []
Spécifier les horodatages de validation
Pour insérer ou mettre à jour une valeur automatiquement dans une colonne d'horodatage de validation, transmettez spanner.commit_timestamp()
en tant que valeur de la colonne. L'exemple suivant écrit l'horodatage de validation dans la colonne LastUpdated
lorsque la ligne est insérée.
gcloud spanner rows insert --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,LastUpdated='spanner.commit_timestamp()'
L'exemple suivant écrit une valeur d'horodatage spécifique dans la colonne LastUpdated
:
gcloud spanner rows update --instance=test-instance --database=example-db \ --table=Singers \ --data=SingerId=1,LastUpdated=2017-01-02T12:34:00.45Z