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

Por exemplo, restaure o snapshot da tabela library_backup.books na nova tabela library.books_new da seguinte maneira:

Console

  1. No console do Cloud, acesse a página do 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, neste caso, library_backup.books.

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

    Restaurar tabela do snapshot

  4. No painel Restaurar snapshot exibido, insira Projeto, ID do conjunto de dados e Nome da tabela da tabela de destino.

  5. Para substituir uma tabela por dados do snapshot, selecione Substituir tabela, se houver. Se você não selecionar essa opção e a tabela de destino já existir, haverá um erro.

  6. Clique em Restaurar.

SQL

Execute a seguinte consulta:

CREATE TABLE library.books_new
  CLONE library_backup.books

bq

Digite o seguinte comando no Cloud Shell:

Acessar o Cloud Shell

bq cp --restore --no_clobber library_backup.books library.books_new

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 myProject
Corpo da solicitação

{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "myProject",
          "datasetId": "library_backup",
          "tableId": "books"
        }
      ],
      "destinationTable": {
        "projectId": "myProject",
        "datasetId": "library",
        "tableId": "books_new"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_EMPTY"
    }
  }
}

Se uma expiração não for especificada, a tabela de destino expirará após o tempo de expiração padrão da tabela do conjunto de dados que contém a tabela de destino; Nesse caso, o conjunto de dados library.

Substituir uma tabela atual

Restaure o snapshot da tabela library_backup.books substituindo a tabela library.books atual da seguinte maneira:

Console

  1. No console do Cloud, acesse a página do 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, neste caso, library_backup.books.

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

    Restaurar tabela do snapshot

  4. No painel Restaurar snapshot exibido, insira Projeto, ID do conjunto de dados e Nome da tabela da tabela que você quer substituir.

  5. Clique em Restaurar.

SQL

Execute a seguinte consulta:

CREATE OR REPLACE TABLE
  library.books
  CLONE library_backup.books

bq

Digite o seguinte comando no Cloud Shell:

Acessar o Cloud Shell

bq cp --restore --force library_backup.books library.books

API

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

Parâmetro Valor
projectId myProject
Corpo da solicitação

{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "myProject",
          "datasetId": "library_backup",
          "tableId": "books"
        }
      ],
      "destinationTable": {
        "projectId": "myProject",
        "datasetId": "library",
        "tableId": "books"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_TRUNCATE"
    }
  }
}

Se uma expiração não for especificada, a tabela de destino expirará após o tempo de expiração padrão da tabela do conjunto de dados que contém a tabela de destino. Nesse caso, o conjunto de dados library.

A seguir