Restaurar capturas de tablas

En este documento se describe cómo crear una tabla en la que se puedan escribir datos a partir de una instantánea de tabla mediante la consola Google Cloud , una consulta CREATE TABLE CLONE, un comando bq cp o la API jobs.insert. Está dirigido a usuarios que conocen las capturas de tablas.

Permisos y roles

En esta sección se describen los permisos de gestión de identidades y accesos (IAM) que necesitas para crear una tabla en la que se pueda escribir a partir de una instantánea de una tabla, así como los roles de IAM predefinidos que conceden esos permisos.

Permisos

Para crear una tabla en la que se puedan escribir datos a partir de una captura de tabla, necesitas los siguientes permisos:

Permiso Recurso
Todas las siguientes:

bigquery.tables.get
bigquery.tables.getData
bigquery.tables.restoreSnapshot
La instantánea de la tabla que quieras copiar en una tabla editable.
bigquery.tables.create El conjunto de datos que contiene la tabla de destino.

Roles

Los roles predefinidos de BigQuery que proporcionan los permisos necesarios son los siguientes:

Role Recurso
Cualquiera de las siguientes:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
La instantánea de la tabla que quieras copiar en una tabla editable.
Cualquiera de las siguientes:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
El conjunto de datos que contiene la tabla de destino.

Restaurar una captura de tabla

Para crear una tabla en la que se puedan escribir datos a partir de una instantánea, especifica la instantánea de la tabla que quieras copiar y la tabla de destino. La tabla de destino puede ser una tabla nueva o puedes sobrescribir una tabla que ya tengas con la instantánea de la tabla.

Restaurar en una tabla nueva

Puedes restaurar una instantánea de una tabla en una tabla nueva con una de las siguientes opciones:

Consola

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, despliega los nodos de proyecto y de conjunto de datos de la instantánea de tabla que quieras restaurar.

  3. Haga clic en el nombre de la instantánea de la tabla.

  4. En el panel de la instantánea de la tabla que aparece, haz clic en Restaurar.

    Restaurar una tabla a partir de una captura

  5. En el panel Restaurar instantánea que aparece, introduce la información de Proyecto, Conjunto de datos y Tabla de la nueva tabla.

  6. Haz clic en Guardar.

SQL

Usa la CREATE TABLE CLONEdeclaración de DDL:

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, introduce la siguiente instrucción:

    CREATE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.NEW_TABLE_NAME
    CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;

    Haz los cambios siguientes:

    • TABLE_PROJECT_ID: el ID del proyecto en el que se creará la tabla.
    • TABLE_DATASET_NAME: el nombre del conjunto de datos en el que se creará la tabla.
    • NEW_TABLE_NAME: el nombre de la nueva tabla.
    • SNAPSHOT_PROJECT_ID: el ID del proyecto que contiene la instantánea a partir de la que vas a restaurar.
    • SNAPSHOT_DATASET_NAME: el nombre del conjunto de datos que contiene la instantánea a partir de la que vas a restaurar.
    • SNAPSHOT_NAME: el nombre de la captura desde la que vas a restaurar.

  3. Haz clic en Ejecutar.

Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.

bq

Introduce el siguiente comando en Cloud Shell:

Ir a Cloud Shell

bq cp \
--restore \
--no_clobber \
SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \
TABLE_PROJECT_ID:TABLE_DATASET_NAME.NEW_TABLE_NAME

Haz los cambios siguientes:

  • SNAPSHOT_PROJECT_ID: el ID del proyecto que contiene la instantánea a partir de la que vas a restaurar.
  • SNAPSHOT_DATASET_NAME: el nombre del conjunto de datos que contiene la instantánea a partir de la que vas a restaurar.
  • SNAPSHOT_NAME: el nombre de la captura desde la que vas a restaurar.
  • TABLE_PROJECT_ID: el ID del proyecto en el que se creará la tabla.
  • TABLE_DATASET_NAME: el nombre del conjunto de datos en el que se creará la tabla.
  • NEW_TABLE_NAME: el nombre de la nueva tabla.

La marca --no_clobber indica al comando que debe fallar si la tabla de destino ya existe.

API

Llama al método jobs.insert con los siguientes parámetros:

Parámetro Valor
projectId El ID del proyecto al que se le facturará esta operación.
Cuerpo de la solicitud
{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "SNAPSHOT_PROJECT_ID",
          "datasetId": "SNAPSHOT_DATASET_NAME",
          "tableId": "SNAPSHOT_NAME"
        }
      ],
      "destinationTable": {
        "projectId": "TABLE_PROJECT_ID",
        "datasetId": "TABLE_DATASET_NAME",
        "tableId": "NEW_TABLE_NAME"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_EMPTY"
    }
  }
}

Haz los cambios siguientes:

  • SNAPSHOT_PROJECT_ID: el ID del proyecto que contiene la instantánea a partir de la que vas a restaurar.
  • SNAPSHOT_DATASET_NAME: el nombre del conjunto de datos que contiene la instantánea a partir de la que vas a restaurar.
  • SNAPSHOT_NAME: el nombre de la captura desde la que vas a restaurar.
  • TABLE_PROJECT_ID: el ID del proyecto en el que se creará la tabla.
  • TABLE_DATASET_NAME: el nombre del conjunto de datos en el que se creará la tabla.
  • NEW_TABLE_NAME: el nombre de la nueva tabla.

Si no se especifica una fecha de vencimiento, la tabla de destino caducará después del tiempo de vencimiento predeterminado de la tabla del conjunto de datos que contiene la tabla de destino.

Sobrescribir una tabla

Puede sobrescribir una tabla con una instantánea de tabla mediante una de las siguientes opciones:

Consola

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, despliega los nodos de proyecto y de conjunto de datos de la instantánea de tabla que quieras restaurar.

  3. Haga clic en el nombre de la instantánea de la tabla.

  4. En el panel de la instantánea de la tabla que aparece, haz clic en Restaurar.

    Restaurar una tabla a partir de una captura

  5. En el panel Restaurar instantánea que aparece, introduce la información de Proyecto, Conjunto de datos y Tabla de la tabla.

  6. Selecciona Sobrescribir tabla si existe.

  7. Haz clic en Guardar.

SQL

Usa la CREATE TABLE CLONEdeclaración de DDL:

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, introduce la siguiente instrucción:

    CREATE OR REPLACE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME
    CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;

    Haz los cambios siguientes:

    • TABLE_PROJECT_ID: el ID del proyecto en el que se creará la tabla.
    • TABLE_DATASET_NAME: el nombre del conjunto de datos que contiene la tabla que vas a sobrescribir.
    • TABLE_NAME: el nombre de la tabla que vas a sobrescribir.
    • SNAPSHOT_PROJECT_ID: el ID del proyecto que contiene la instantánea a partir de la que vas a restaurar.
    • SNAPSHOT_DATASET_NAME: el nombre del conjunto de datos que contiene la instantánea a partir de la que vas a restaurar.
    • SNAPSHOT_NAME: el nombre de la captura desde la que vas a restaurar.

  3. Haz clic en Ejecutar.

Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.

bq

Introduce el siguiente comando en Cloud Shell:

Ir a Cloud Shell

bq cp \
--restore \
--force \
SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \
TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME

Haz los cambios siguientes:

  • SNAPSHOT_PROJECT_ID: el ID del proyecto que contiene la instantánea a partir de la que vas a restaurar.
  • SNAPSHOT_DATASET_NAME: el nombre del conjunto de datos que contiene la instantánea a partir de la que vas a restaurar.
  • SNAPSHOT_NAME: el nombre de la captura desde la que vas a restaurar.
  • TABLE_PROJECT_ID: el ID del proyecto en el que se creará la tabla.
  • TABLE_DATASET_NAME: el nombre del conjunto de datos que contiene la tabla que vas a sobrescribir.
  • TABLE_NAME: el nombre de la tabla que vas a sobrescribir.

API

Llama al método jobs.insert con los siguientes parámetros:

Parámetro Valor
projectId El ID del proyecto al que se le facturará esta operación.
Cuerpo de la solicitud
{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "SNAPSHOT_PROJECT_ID",
          "datasetId": "SNAPSHOT_DATASET_NAME",
          "tableId": "SNAPSHOT_NAME"
        }
      ],
      "destinationTable": {
        "projectId": "TABLE_PROJECT_ID",
        "datasetId": "TABLE_DATASET_NAME",
        "tableId": "TABLE_NAME"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_TRUNCATE"
    }
  }
}

Haz los cambios siguientes:

  • SNAPSHOT_PROJECT_ID: el ID del proyecto que contiene la instantánea a partir de la que vas a restaurar.
  • SNAPSHOT_DATASET_NAME: el nombre del conjunto de datos que contiene la instantánea a partir de la que vas a restaurar.
  • SNAPSHOT_NAME: el nombre de la captura desde la que vas a restaurar.
  • TABLE_PROJECT_ID: el ID del proyecto en el que se creará la tabla.
  • TABLE_DATASET_NAME: el nombre del conjunto de datos que contiene la tabla que vas a sobrescribir.
  • TABLE_NAME: el nombre de la tabla que vas a sobrescribir.

Si no se especifica una fecha de vencimiento, la tabla de destino caducará después del tiempo de vencimiento predeterminado de la tabla del conjunto de datos que contiene la tabla de destino.

Siguientes pasos