Restaurar snapshots da tabela
Neste documento, você vai aprender a criar uma tabela gravável com base em um
snapshot de tabela usando o console 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
No console do Google Cloud , acesse a página BigQuery.
No painel à esquerda, clique em
Explorer:Se o painel esquerdo não aparecer, clique em
Expandir painel esquerdo para abrir.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.
Clique em Visão geral > Tabelas e, em seguida, no nome do snapshot da tabela.
No painel de resumo da tabela exibido, clique em update Restaurar.
No painel Restaurar snapshot que é exibido, insira as informações do Projeto, Conjunto de dados e Tabela para a nova tabela.
Clique em Salvar.
SQL
Use a
instrução DDL CREATE TABLE CLONE
:
No console do Google Cloud , acesse a página BigQuery.
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.
Clique em
Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
bq
Digite o seguinte comando no 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
No console do Google Cloud , acesse a página BigQuery.
No painel à esquerda, clique em
Explorer: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.
Clique em Visão geral > Tabelas e, em seguida, no nome do snapshot da tabela.
No painel de resumo da tabela exibido, clique em Restaurar.
No painel Restaurar snapshot que é exibido, insira as informações do Projeto, Conjunto de dados e Tabela para a tabela atual.
Selecione Substituir tabela (se houver).
Clique em Salvar.
SQL
Use a
instrução DDL CREATE TABLE CLONE
:
No console do Google Cloud , acesse a página BigQuery.
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.
Clique em
Executar.
Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.
bq
Digite o seguinte comando no 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.