Insérer, mettre à jour et supprimer des données via l'outil de ligne de commande gcloud

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 langage LMD de Cloud Spanner, consultez la section 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
L'exemple suivant supprime une ligne de la table "Singers" (Chanteurs) :
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 automatiquement une valeur dans une colonne commit timestamp, transmettez spanner.commit_timestamp() comme 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