Insertar, actualizar y eliminar datos con Google Cloud CLI

En esta página se describe cómo insertar, actualizar y eliminar datos con la herramienta de línea de comandos gcloud.

Modificar datos mediante DML

Para ejecutar instrucciones del lenguaje de manipulación de datos (DML), usa el comando gcloud spanner databases execute-sql . En el siguiente ejemplo se añade una fila a la tabla Singers.

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

Para ejecutar una declaración de DML particionado, usa el comando gcloud spanner databases execute-sql con la opción --enable-partitioned-dml. En el siguiente ejemplo se actualizan las filas de la tabla 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 consultar la referencia de DML de Spanner, consulta la sintaxis del lenguaje de manipulación de datos.

Modificar filas con el grupo de comandos rows

Usa el grupo de comandos gcloud spanner rows para modificar los datos de una base de datos:

  • Insertar filas en una tabla.
  • Actualizar las columnas de las filas de una tabla.
  • Eliminar filas de una tabla.

El grupo de comandos rows reconoce literales para todos los tipos de columna válidos.

Insertar una fila en una tabla

Para insertar una fila en una tabla, debe incluir valores para las columnas clave y para cualquier otra columna obligatoria:

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

En el siguiente ejemplo se inserta una nueva fila en la tabla Singers:

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

Actualizar una fila de una tabla

Para actualizar una fila de una tabla, debe incluir valores para las columnas clave y las columnas que quiera actualizar:

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

En el siguiente ejemplo se actualiza una fila de la tabla Singers:

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

No puedes cambiar los valores de las claves con el comando update. Para actualizar un valor de clave, debes crear una fila y eliminar la que ya tienes.

Eliminar una fila de una tabla

Para eliminar una fila, debe especificar los valores de las columnas de clave principal:

gcloud spanner rows delete --instance=INSTANCE_ID --database=DATABASE_ID  \
    --table=TABLE_NAME \
    --keys=KEY_VALUE_1,KEY_VALUE_2,KEY_VALUE_3
En el siguiente ejemplo se elimina una fila de la tabla `Singers`:
gcloud spanner rows delete --instance=test-instance --database=example-db \
    --table=Singers \
    --keys=1

Especificar valores de ARRAY

Para insertar o actualizar valores en una ARRAYcolumna, coloca los datos en un archivo YAML y usa la opción --flags-file.

Por ejemplo, este archivo YAML especifica la matriz [1,2,3] para la columna Numbers:

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

Para insertar una fila con los datos YAML, usa la opción --flags-file:

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

En el caso de una matriz NULL, no incluya ningún valor para Numbers en el archivo:

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

En el caso de una matriz vacía, defina la matriz como []:

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

Especificar marcas de tiempo de confirmación

Para insertar o actualizar automáticamente un valor en una columna marca de tiempo de confirmación, indique spanner.commit_timestamp() como valor de la columna. En el siguiente ejemplo se escribe la marca de tiempo de confirmación en la columna LastUpdated cuando se inserta la fila.

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

En el siguiente ejemplo se escribe un valor de marca de tiempo específico en la columna LastUpdated:

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