Inserta, actualiza y borra datos con la herramienta de línea de comandos de gcloud

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

Modifica datos con DML

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

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

Si deseas ejecutar una declaración DML particionada, usa el comando gcloud spanner databases execute-sql con la opción --enable-partitioned-dml. En el ejemplo siguiente, 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'

Si deseas consultar la referencia de DML de Cloud Spanner, consulta Sintaxis del lenguaje de manipulación de datos.

Modifica filas con el grupo de comandos de filas

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

  • Inserta filas nuevas en una tabla.
  • Actualiza las columnas de las filas existentes en una tabla.
  • Borra filas de una tabla.

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

Inserta una fila en una tabla

Si deseas insertar una fila nueva en una tabla, debes incluir valores para las columnas de claves y 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 fila nueva en la tabla Singers:

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

Actualiza una fila en una tabla

Si deseas actualizar una fila de una tabla, debes incluir valores para las columnas de claves y las columnas que deseas 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 clave con el comando update. Si deseas actualizar un valor de clave, debes crear una fila nueva y borrar la existente.

Borra una fila de una tabla

Si deseas borrar una fila, debes especificar los valores para las columnas de clave primaria:

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 borra una fila de la tabla “Singers”:
gcloud spanner rows delete --instance=test-instance --database=example-db \
    --table=Singers \
    --keys=1

Especifica valores de ARRAY

Si deseas insertar o actualizar valores en una columna ARRAY, coloca los datos en un archivo YAML y usa la opción --flags-file.

Por ejemplo, este archivo YAML especifica el arreglo [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

Para un arreglo NULL, no incluyas un valor para Numbers en el archivo:

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

Para un arreglo vacío, define el arreglo como []:

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

Especifica marcas de tiempo de confirmación

Para insertar o actualizar de manera automática un valor en una columna de marca de tiempo de confirmación, pasa spanner.commit_timestamp() como el 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