Restaurar snapshots da tabela

Neste documento, você verá como criar uma tabela gravável a partir de um snapshot de tabela usando o Google Cloud console, uma CREATE TABLE CLONE consulta, um bq cp comando 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 Google Cloud console, acesse a página BigQuery.

    Acessar o BigQuery

  2. No painel à esquerda, clique em Explorer:

    Botão destacado para o painel "Explorer".

    Se o painel esquerdo não aparecer, clique em Expandir painel esquerdo para abrir.

  3. No painel Explorer, expanda o projeto, clique em Conjuntos de dados e clique no conjunto de dados que contém o snapshot da tabela que você quer restaurar.

  4. Clique em Visão geral > Tabelas e clique no nome do snapshot da tabela.

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

    Restaurar tabela do snapshot

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

  7. Clique em Salvar.

SQL

Use a instrução DDL CREATE TABLE CLONE statement:

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

    Acessar 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 Google Cloud console, acesse a página BigQuery.

    Acessar o BigQuery

  2. No painel à esquerda, clique em Explorer:

    Botão destacado para o painel "Explorer".

  3. No painel Explorer, expanda o projeto, clique em Conjuntos de dados e clique no conjunto de dados que contém o snapshot da tabela que você quer restaurar.

  4. Clique em Visão geral > Tabelas e clique no nome do snapshot da tabela.

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

    Restaurar tabela do snapshot

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

  7. Selecione Substituir tabela (se houver).

  8. Clique em Salvar.

SQL

Use a instrução DDL CREATE TABLE CLONE statement:

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

    Acessar 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