Restaurar snapshots da tabela

Neste documento, você verá como criar uma tabela gravável a partir de um snapshot de tabela usando o Console do Google Cloud, uma consulta CREATE TABLE CLONE, um comando bq cp ou a API jobs.insert. Ele é destinado a usuários familiarizados com os snapshots da tabela.

Permissões e papéis

Esta seção descreve as permissões de gerenciamento de identidade e acesso (IAM) de que você precisa para criar uma tabela gravável a partir de um snapshot de tabela e os papéis predefinidos do IAM que concedem essas permissões.

Permissões

Para criar uma tabela gravável a partir de um snapshot da tabela, você precisa destas permissões:

Permissão Recurso
Todas as opções a seguir:

bigquery.tables.get
bigquery.tables.getData
bigquery.tables.restoreSnapshot
O snapshot da tabela que você quer copiar para uma tabela gravável.
bigquery.tables.create O conjunto de dados que contém a tabela de destino

Papéis

Os papéis predefinidos do BigQuery que fornecem as permissões necessárias são os seguintes:

Papel Recurso
Qualquer um dos seguintes:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
O snapshot da tabela que você quer copiar para uma tabela gravável.
Qualquer um dos seguintes:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
O conjunto de dados que contém a tabela de destino

Restaurar um snapshot da tabela

Para criar uma tabela gravável a partir de um snapshot, especifique a tabela que você quer copiar e a tabela de destino. A tabela de destino pode ser uma nova tabela ou é possível substituir uma tabela atual pelo snapshot da tabela.

Restaurar para uma nova tabela

É possível restaurar um snapshot da tabela em uma nova tabela usando uma das seguintes opções:

Console

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No painel Explorer, expanda os nós do projeto e do conjunto de dados do snapshot da tabela que você quer restaurar.

  3. Clique no nome do snapshot da tabela.

  4. No painel de resumo da tabela exibido, clique em Restaurar.

    Restaurar tabela do snapshot

  5. No painel Restaurar snapshot que é exibido, insira as informações do Projeto, Conjunto de dados e Tabela para a nova tabela.

  6. Clique em Salvar.

SQL

Use a instrução DDL CREATE TABLE CLONE:

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

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

    Substitua:

    • TABLE_PROJECT_ID: o ID do projeto em que a nova tabela será criada.
    • TABLE_DATASET_NAME: o nome do conjunto de dados em que a nova tabela será criada.
    • NEW_TABLE_NAME: o nome da nova tabela.
    • SNAPSHOT_PROJECT_ID: o ID do projeto que contém o snapshot do qual você está restaurando.
    • SNAPSHOT_DATASET_NAME: o nome do conjunto de dados que contém o snapshot do qual você está restaurando.
    • SNAPSHOT_NAME: o nome do snapshot do qual você está restaurando.

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

bq

Digite o seguinte comando no Cloud Shell:

Acesse o Cloud Shell

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

Substitua:

  • SNAPSHOT_PROJECT_ID: o ID do projeto que contém o snapshot do qual você está restaurando.
  • SNAPSHOT_DATASET_NAME: o nome do conjunto de dados que contém o snapshot do qual você está restaurando.
  • SNAPSHOT_NAME: o nome do snapshot do qual você está restaurando.
  • TABLE_PROJECT_ID: o ID do projeto em que a nova tabela será criada.
  • TABLE_DATASET_NAME: o nome do conjunto de dados em que a nova tabela será criada.
  • NEW_TABLE_NAME: o nome da nova tabela.

A sinalização --no_clobber instrui a falha do comando se a tabela de destino já existir.

API

Chame o método jobs.insert com os seguintes parâmetros:

Parâmetro Valor
projectId O ID do projeto a ser faturado por esta operação.
Corpo da solicitação
{
  "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"
    }
  }
}

Substitua:

  • SNAPSHOT_PROJECT_ID: o ID do projeto que contém o snapshot do qual você está restaurando.
  • SNAPSHOT_DATASET_NAME: o nome do conjunto de dados que contém o snapshot do qual você está restaurando.
  • SNAPSHOT_NAME: o nome do snapshot do qual você está restaurando.
  • TABLE_PROJECT_ID: o ID do projeto em que a nova tabela será criada.
  • TABLE_DATASET_NAME: o nome do conjunto de dados em que a nova tabela será criada.
  • NEW_TABLE_NAME: o nome da nova tabela.

Se uma validade não for especificada, a tabela de destino expirará após o prazo de validade padrão da tabela do conjunto de dados que contém a tabela de destino.

Substituir uma tabela atual

É possível substituir uma tabela por um snapshot usando uma das seguintes opções:

Console

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No painel Explorer, expanda os nós do projeto e do conjunto de dados do snapshot da tabela que você quer restaurar.

  3. Clique no nome do snapshot da tabela.

  4. No painel de resumo da tabela exibido, clique em Restaurar.

    Restaurar tabela do snapshot

  5. No painel Restaurar snapshot que é exibido, insira as informações do Projeto, Conjunto de dados e Tabela para a tabela atual.

  6. Selecione Substituir tabela (se houver).

  7. Clique em Salvar.

SQL

Use a instrução DDL CREATE TABLE CLONE:

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

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

    Substitua:

    • TABLE_PROJECT_ID: o ID do projeto em que a nova tabela será criada.
    • TABLE_DATASET_NAME: o nome do conjunto de dados que contém a tabela que você está substituindo.
    • TABLE_NAME: o nome da tabela que você está substituindo.
    • SNAPSHOT_PROJECT_ID: o ID do projeto que contém o snapshot do qual você está restaurando.
    • SNAPSHOT_DATASET_NAME: o nome do conjunto de dados que contém o snapshot do qual você está restaurando.
    • SNAPSHOT_NAME: o nome do snapshot do qual você está restaurando.

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

bq

Digite o seguinte comando no Cloud Shell:

Acesse o Cloud Shell

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

Substitua:

  • SNAPSHOT_PROJECT_ID: o ID do projeto que contém o snapshot do qual você está restaurando.
  • SNAPSHOT_DATASET_NAME: o nome do conjunto de dados que contém o snapshot do qual você está restaurando.
  • SNAPSHOT_NAME: o nome do snapshot do qual você está restaurando.
  • TABLE_PROJECT_ID: o ID do projeto em que a nova tabela será criada.
  • TABLE_DATASET_NAME: o nome do conjunto de dados que contém a tabela que você está substituindo.
  • TABLE_NAME: o nome da tabela que você está substituindo.

API

Chame o método jobs.insert com os seguintes parâmetros:

Parâmetro Valor
projectId O ID do projeto a ser faturado por esta operação.
Corpo da solicitação
{
  "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"
    }
  }
}

Substitua:

  • SNAPSHOT_PROJECT_ID: o ID do projeto que contém o snapshot do qual você está restaurando.
  • SNAPSHOT_DATASET_NAME: o nome do conjunto de dados que contém o snapshot do qual você está restaurando.
  • SNAPSHOT_NAME: o nome do snapshot do qual você está restaurando.
  • TABLE_PROJECT_ID: o ID do projeto em que a nova tabela será criada.
  • TABLE_DATASET_NAME: o nome do conjunto de dados que contém a tabela que você está substituindo.
  • TABLE_NAME: o nome da tabela que você está substituindo.

Se uma validade não for especificada, a tabela de destino expirará após o prazo de validade padrão da tabela do conjunto de dados que contém a tabela de destino.

A seguir