Gelöschte Tabellen wiederherstellen
In diesem Dokument wird beschrieben, wie Sie eine gelöschte Tabelle in BigQuery wiederherstellen (oder wiederherstellen). Sie können eine gelöschte Tabelle innerhalb des für das Dataset angegebenen Zeitreisefensters wiederherstellen. Das gilt auch für explizite und implizite Löschungen aufgrund des Ablaufs einer Tabelle. Sie können auch das Zeitreisefenster konfigurieren.
Informationen zum Wiederherstellen eines gesamten gelöschten Datasets oder Snapshots finden Sie in den folgenden Ressourcen:
Das Zeitreisefenster kann zwischen zwei und sieben Tagen liegen. Nach Ablauf des Zeitreisefensters bietet BigQuery eine Fail-Safe-Periode, in der die gelöschten Daten automatisch sieben weitere Tage aufbewahrt werden. Nach Ablauf des Fail-Safe-Zeitraums ist es nicht mehr möglich, eine Tabelle wiederherzustellen, weder durch das Öffnen eines Support-Tickets noch durch andere Methoden.
Hinweise
Sie benötigen die erforderlichen IAM-Berechtigungen (Identity and Access Management), um eine gelöschte Tabelle wiederherzustellen.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle BigQuery-Nutzer (roles/bigquery.user) für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Wiederherstellen einer gelöschten Tabelle benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Tabelle wiederherstellen
Sie können eine Tabelle aus Verlaufsdaten wiederherstellen, indem Sie die Verlaufsdaten in eine neue Tabelle kopieren. Das Kopieren von Verlaufsdaten funktioniert auch dann, wenn die Tabelle gelöscht wurde oder abgelaufen ist, sofern Sie die Tabelle innerhalb des Zeitreisefensters wiederherstellen.
Wenn Sie eine Tabelle aus Verlaufsdaten wiederherstellen, werden Tags aus der Quelltabelle nicht in die Zieltabelle kopiert. Informationen zur Tabellenpartitionierung werden ebenfalls nicht in die Zieltabelle kopiert. Wenn Sie das Partitionierungsschema der ursprünglichen Tabelle neu erstellen möchten, können Sie die ursprüngliche Anfrage zum Erstellen der Tabelle in Cloud Logging aufrufen und diese Informationen verwenden, um die wiederhergestellte Tabelle zu partitionieren.
Sie können eine Tabelle wiederherstellen, die gelöscht wurde, aber sich noch innerhalb des Zeitreisefensters befindet. Kopieren Sie dazu die Tabelle mit dem Zeit-Decorator @<time> in eine neue Tabelle.
Sie können keine gelöschte Tabelle abfragen, auch wenn Sie einen Zeit-Decorator verwenden. Sie müssen es zuerst wiederherstellen.
Verwenden Sie die folgende Syntax mit dem Zeit-Decorator @<time>:
tableid@TIME, wobeiTIMEdie Anzahl von Millisekunden seit der Unix-Epoche ist.tableid@-TIME_OFFSET, wobeiTIME_OFFSETdas relative Offset von der aktuellen Zeit in Millisekunden ist.tableid@0: gibt die ältesten verfügbaren Verlaufsdaten an.
Wählen Sie eine der folgenden Optionen aus, um eine Tabelle wiederherzustellen:
Console
Mit der Google Cloud Console können gelöschte Tabellen nicht wiederhergestellt werden.
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.
Legen Sie zum Wiederherstellen der Tabelle zuerst einen UNIX-Zeitstempel in Millisekunden für die Zeit fest, in der die Tabelle existiert hat. Mit dem Linux-Befehl
datekönnen Sie den Unix-Zeitstempel aus einem regulären Zeitstempelwert generieren:date -d '2023-08-04 16:00:34.456789Z' +%s000
Verwenden Sie dann den Befehl
bq copymit dem Zeitreise-Decorator@<time>, um den Tabellen-Kopiervorgang auszuführen.Geben Sie beispielsweise den folgenden Befehl ein, um die Tabelle
mydataset.mytablezum Zeitpunkt1418864998000in die neue Tabellemydataset.newtablezu kopieren.bq cp mydataset.mytable@1418864998000 mydataset.newtable
Optional: Geben Sie das Flag
--locationan und legen Sie als Wert Ihren Standort fest.Sie können auch ein relatives Offset angeben. Im folgenden Beispiel wird die Version einer Tabelle von vor einer Stunde kopiert:
bq cp mydataset.mytable@-3600000 mydataset.newtable
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Wenn Sie davon ausgehen, dass Sie eine Tabelle später wiederherstellen möchten, als dies durch das Zeitreisefenster zulässig ist, erstellen Sie einen Tabellen-Snapshot der Tabelle. Weitere Informationen finden Sie unter Einführung in Tabellen-Snapshots.
Sie können eine logische Ansicht nicht direkt wiederherstellen. Weitere Informationen finden Sie unter Ansicht wiederherstellen.
Fehlerbehebung bei der Wiederherstellung von Tabellen
Gelöschte Tabelle mit einem Zeitstempel in der Vergangenheit abfragen
Sie können Tabellendaten nicht wiederherstellen, indem Sie eine gelöschte Tabelle in der Vergangenheit mit einem Zeitstempel-Decorator abfragen oder das Ergebnis mit FOR SYSTEM_TIME AS OF in einer Zieltabelle speichern. Bei beiden Methoden wird der folgende Fehler ausgegeben:
Not found: Table myproject:mydataset.table was not found in location LOCATION
Wenn Sie die Tabelle kopieren möchten, folgen Sie der Anleitung unter Tabelle wiederherstellen.
Fehler: VPC Service Controls: Request is prohibited by organization's policy
Wenn Sie versuchen, den Kopierbefehl über Google Cloud Shell auszuführen, kann ein Fehler wie der folgende auftreten:
BigQuery error in cp operation: VPC Service Controls: Request is prohibited by organization's policy
Die Verwendung von Cloud Shell über die Google Cloud -Konsole mit VPC SC wird nicht unterstützt, da sie als Anfrage außerhalb der Dienstperimeter behandelt wird und der Zugriff auf Daten, die durch VPC Service Controls geschützt werden, verweigert wird. Um dieses Problem zu umgehen, starten Sie Cloud Shell und stellen Sie mit der Google Cloud CLI eine lokale Verbindung her.
Fehler: Latest categories are incompatible with schema
Wenn Sie den Kopierbefehl in Google Cloud Shell ausführen, wird möglicherweise ein Fehler wie der folgende angezeigt:
Latest categories are incompatible with schema at TIMESTAMP
Für diesen Fehler gibt es mehrere mögliche Ursachen:
- Das Schema der Zieltabelle unterscheidet sich vom Schema der Originaltabelle. Zusätzliche Spalten sind zulässig, sofern ihnen keine Richtlinien-Tags auf Spaltenebene zugewiesen sind.
- Die Richtlinientags auf Spaltenebene der Zieltabelle sind anders konfiguriert als die der Quelltabelle.
So beheben Sie diesen Fehler:
- Das Schema der Zieltabelle muss identisch sein und alle Spalten der Originaltabelle müssen auch in der Zieltabelle vorhanden sein.
- Entfernen Sie alle Richtlinien-Tags auf Spaltenebene aus der Zieltabelle, die nicht im Schema der Originaltabelle enthalten sind.
Fehler: BigQuery error in cp operation: Invalid time travel timestamp
Wenn Sie den Befehl bq copy in Google Cloud Shell ausführen, erhalten Sie möglicherweise eine Fehlermeldung wie die folgende:
BigQuery error in cp operation: Invalid time travel timestamp 1744343690000 for table PROJECT_ID:DATASET_ID.TABLE_ID@1744343690000. Cannot read before 1744843691075
Dieser Fehler weist darauf hin, dass Sie versuchen, Daten aus dem Tabellenstatus vor dem Zeitreisefenster oder vor dem Erstellen der Tabelle wiederherzustellen. Dies wird nicht unterstützt. Die Fehlermeldung enthält den letzten Zeitstempel, der zum Lesen der Tabellendaten verwendet werden kann. Verwenden Sie den Zeitstempel im Fehler im bq copy-Befehl.
Dieser Fehler kann auch auftreten, wenn Sie einen negativen Zeitstempelwert angeben, z. B. TABLE@-1744963620000. Verwenden Sie stattdessen einen Zeit-Offset, der mit dem --Zeichen verwendet werden kann.
BigQuery error in cp operation: Invalid time travel timestamp 584878816 for table PROJECT_ID:DATASET_ID.TABLE_ID@584878816. Cannot read before 1744843691075
Diese Fehlermeldung weist darauf hin, dass der Befehl bq cp einen negativen Zeitstempelwert als Offset enthält und Sie versucht haben, die Tabelle unter CURRENT_TIMESTAMP - PROVIDED TIMESTAMP zu lesen. Dieser Wert ist normalerweise ein Zeitstempel im Jahr 1970. Um dieses Problem zu umgehen, prüfen Sie die Offset- oder Zeitstempelwerte, wenn Sie den Tabellendekoratorwert festlegen, und verwenden Sie das --Zeichen entsprechend.
Nächste Schritte
- Tabellen erstellen und verwenden
- Tabellen verwalten
- Tabellenschemas ändern
- Mit Tabellendaten arbeiten