Restaure tabelas eliminadas
Este documento descreve como restaurar (ou anular a eliminação) de uma tabela eliminada no BigQuery. Pode restaurar uma tabela eliminada no período de viagem no tempo especificado para o conjunto de dados, incluindo eliminações explícitas e eliminações implícitas devido à expiração da tabela. Também pode configurar o período de viagem no tempo.
Para obter informações sobre como restaurar um conjunto de dados ou uma imagem instantânea eliminada na totalidade, consulte os seguintes recursos:
O período de viagem no tempo pode ter uma duração entre dois e sete dias. Após o período de viagem no tempo, o BigQuery oferece um período de segurança em que os dados eliminados são automaticamente retidos durante mais sete dias. Após o período de segurança, não é possível restaurar uma tabela através de nenhum método, incluindo a abertura de um pedido de apoio técnico.
Antes de começar
Certifique-se de que tem as autorizações da gestão de identidade e de acesso (IAM) necessárias para restaurar uma tabela eliminada.
Funções necessárias
Para receber as autorizações de que
precisa para restaurar uma tabela eliminada,
peça ao seu administrador para lhe conceder a função de IAM
Utilizador do BigQuery (roles/bigquery.user)
no projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Restaure uma tabela
Pode restaurar uma tabela a partir de dados do histórico copiando os dados do histórico para uma nova tabela. A cópia de dados do histórico funciona mesmo que a tabela tenha sido eliminada ou tenha expirado, desde que a restaure dentro do período da janela de viagem no tempo.
Quando restaura uma tabela a partir de dados do histórico, as etiquetas da tabela de origem não são copiadas para a tabela de destino. As informações de particionamento de tabelas também não são copiadas para a tabela de destino. Para recriar o esquema de partição da tabela original, pode ver o pedido de criação da tabela inicial no Cloud Logging e usar essas informações para particionar a tabela restaurada.
Pode restaurar uma tabela que foi eliminada, mas que ainda está dentro do período de viagem no tempo, copiando a tabela para uma nova tabela através do decorador de tempo @<time>.
Não pode consultar uma tabela eliminada, mesmo que use um decorador de tempo. Primeiro, tem de
restaurá-lo.
Use a seguinte sintaxe com o decorador de tempo @<time>:
tableid@TIME, ondeTIMEé o número de milissegundos desde a época Unix.tableid@-TIME_OFFSETondeTIME_OFFSETé o desvio relativo do tempo atual, em milissegundos.tableid@0: especifica os dados históricos mais antigos disponíveis.
Para restaurar uma tabela, selecione uma das seguintes opções:
Consola
Não pode anular a eliminação de uma tabela através da Google Cloud consola.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para restaurar uma tabela, determine primeiro uma indicação de tempo UNIX de quando a tabela existia (em milissegundos). Pode usar o comando
datedo Linux para gerar a indicação de tempo de época Unix a partir de um valor de indicação de tempo normal:date -d '2023-08-04 16:00:34.456789Z' +%s000
Em seguida, use o comando
bq copycom o decorador de viagem no tempo@<time>para realizar a operação de cópia da tabela.Por exemplo, introduza o seguinte comando para copiar a tabela
mydataset.mytableno momento1418864998000para uma nova tabelamydataset.newtable.bq cp mydataset.mytable@1418864998000 mydataset.newtable
(Opcional) Forneça a flag
--locatione defina o valor para a sua localização.Também pode especificar um desvio relativo. O exemplo seguinte copia a versão de uma tabela de há uma hora:
bq cp mydataset.mytable@-3600000 mydataset.newtable
Ir
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Se prevê que pode querer restaurar uma tabela mais tarde do que o permitido pelo período de viagem no tempo, crie uma imagem instantânea da tabela. Para mais informações, consulte o artigo Introdução às capturas instantâneas de tabelas.
Não pode restaurar uma vista lógica diretamente. Para mais informações, consulte o artigo Restaure uma vista.
Resolva problemas de recuperação de tabelas
Consultar a tabela eliminada com uma data/hora no passado
Não pode restaurar dados de tabelas consultando uma tabela eliminada no passado através de um decorador de data/hora ou usando FOR SYSTEM_TIME AS OF para guardar o resultado numa tabela de destino. A utilização de qualquer um destes métodos
gera o seguinte erro:
Not found: Table myproject:mydataset.table was not found in location LOCATION
Em alternativa, para copiar a tabela, siga os passos em Restaurar uma tabela.
Erro: VPC Service Controls: Request is prohibited by organization's policy
Quando tenta executar o comando de cópia a partir do Google Cloud Shell, pode encontrar um erro semelhante ao seguinte:
BigQuery error in cp operation: VPC Service Controls: Request is prohibited by organization's policy
A utilização do Cloud Shell a partir da Google Cloud consola com o VPC SC não é suportada, porque é tratada como um pedido fora dos perímetros de serviço e o acesso aos dados protegidos pelos VPC Service Controls é negado. Para contornar este problema, inicie e ligue-se ao Cloud Shell localmente com a CLI Google Cloud.
Erro: Latest categories are incompatible with schema
Se executar o comando de cópia a partir do Google Cloud Shell, pode receber um erro semelhante ao seguinte:
Latest categories are incompatible with schema at TIMESTAMP
Há várias causas possíveis para este erro:
- O esquema da tabela de destino é diferente do esquema da tabela original (são permitidas colunas adicionais, desde que não tenham etiquetas de políticas ao nível da coluna anexadas).
- A tabela de destino tem etiquetas de políticas ao nível da coluna configuradas de forma diferente da tabela de origem.
Para resolver este erro:
- Certifique-se de que o esquema da tabela de destino é idêntico e de que nenhuma das colunas da tabela original está em falta na tabela de destino.
- Remova todas as etiquetas de políticas ao nível da coluna da tabela de destino que não estejam no esquema da tabela original.
Erro: BigQuery error in cp operation: Invalid time travel timestamp
Se executar o comando bq copy a partir do Google Cloud Shell, pode receber um erro semelhante ao seguinte:
BigQuery error in cp operation: Invalid time travel timestamp 1744343690000 for table PROJECT_ID:DATASET_ID.TABLE_ID@1744343690000. Cannot read before 1744843691075
Este erro indica que está a tentar recuperar dados do estado da tabela
antes do período de viagem no tempo ou antes da criação da tabela. Isto não é suportado. A mensagem de erro contém a data/hora mais recente que pode ser usada para ler os dados da tabela. Use a indicação de tempo no erro no comando bq copy.
Este erro também pode ocorrer quando fornece um valor de data/hora negativo, por exemplo, TABLE@-1744963620000. Em alternativa, use um desvio de tempo que possa ser usado com o sinal -.
BigQuery error in cp operation: Invalid time travel timestamp 584878816 for table PROJECT_ID:DATASET_ID.TABLE_ID@584878816. Cannot read before 1744843691075
Esta mensagem de erro indica que o comando bq cp contém um valor de data/hora negativo como um desvio e que tentou ler a tabela em CURRENT_TIMESTAMP - PROVIDED TIMESTAMP. Normalmente, este valor é uma data/hora
em 1970. Para contornar este problema, valide os valores de deslocamento ou data/hora quando definir o valor do decorador de tabela e use o sinal - adequadamente.
O que se segue?
- Saiba como criar e usar tabelas.
- Saiba como gerir tabelas.
- Saiba como modificar esquemas de tabelas.
- Saiba como trabalhar com dados de tabelas.