Tabellen verwalten

In diesem Dokument wird beschrieben, wie in BigQuery Tabellen verwaltet werden. Sie haben folgende Möglichkeiten zum Verwalten Ihrer BigQuery-Tabellen:

  • Folgende Angaben für eine Tabelle aktualisieren:
    • Ablaufzeit
    • Beschreibung
    • Schemadefinition
    • Label
  • Tabelle umbenennen (kopieren)
  • Tabelle kopieren
  • Tabelle löschen
  • Gelöschte Tabelle wiederherstellen

Weitere Informationen zum Erstellen und Verwenden von Tabellen finden Sie unter Tabellen erstellen und verwenden. Dort wird unter anderem beschrieben, wie Sie Tabelleninformationen abrufen, Tabellen auflisten und den Zugriff auf Tabellendaten steuern.

Tabellenattribute aktualisieren

Sie können die folgenden Angaben für eine Tabelle aktualisieren:

Erforderliche Berechtigungen

Wenn Sie Tabelleneigenschaften aktualisieren möchten, benötigen Sie WRITER-Zugriff auf Dataset-Ebene oder eine auf Projektebene zugewiesene IAM-Rolle, die die bigquery.tables.update-Berechtigungen umfasst. Die folgenden vordefinierten IAM-Rollen auf Projektebene enthalten die bigquery.tables.update-Berechtigungen:

Da die Rolle bigquery.user die Berechtigung bigquery.datasets.create umfasst, kann ein Nutzer mit der Rolle bigquery.user alle von ihm im Dataset erstellten Tabellen aktualisieren. Erstellt ein Nutzer, der die Rolle bigquery.user hat, ein Dataset, erhält dieser Nutzer OWNER-Zugriff auf das Dataset. OWNER-Zugriff auf ein Dataset ermöglicht dem Nutzer volle Kontrolle darüber und über alle enthaltenen Tabellen und Ansichten.

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Zugriffssteuerung.

Beschreibung einer Tabelle aktualisieren

So können Sie die Beschreibung einer Tabelle aktualisieren:

  • Mit der GCP Console oder der klassischen BigQuery-Web-UI
  • Mit dem Befehl bq update über die Befehlszeile
  • Durch Aufrufen der API-Methode tables.patch

So aktualisieren Sie die Beschreibung einer Tabelle:

Console

Option 1: Beschreibung manuell ändern

Sie können keine Beschreibung hinzufügen, wenn Sie eine Tabelle mit der BigQuery-Web-UI der Console erstellen. Nachdem die Tabelle erstellt worden ist, können Sie auf der Seite Details eine Beschreibung hinzufügen.

  1. Wählen Sie im Bereich Resources (Ressourcen) Ihre Tabelle aus.

  2. Klicken Sie unterhalb des Abfrageeditors auf Details.

Tabellenschema bearbeiten

  1. Klicken Sie im Abschnitt Description (Beschreibung) auf das Stiftsymbol, um die Beschreibung zu bearbeiten.

Beschreibung bearbeiten

  1. Geben Sie eine Beschreibung in das Feld ein und klicken Sie zum Speichern auf Aktualisieren.

Option 2: DDL-Anweisung verwenden

Datendefinitionssprache-Anweisungen (Data Definition Language, DDL) ermöglichen das Erstellen und Ändern von Tabellen und Ansichten mithilfe der Standard-SQL-Abfragesyntax.

Weitere Informationen finden Sie unter DDL-Anweisungen verwenden.

  1. Klicken Sie auf Compose new query (Neue Abfrage erstellen).

  2. Geben Sie die DDL-Anweisung in den Textbereich des Abfrageeditors ein.

     #standardSQL
     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       description="Description of mytable"
     )
     

Klassische UI

Option 1: Beschreibung manuell ändern

  1. Wählen Sie im Navigationsbereich Ihre Tabelle aus.

  2. Klicken Sie auf der Seite Table Details (Tabellendetails) auf Details.

  3. Klicken Sie im Abschnitt Description (Beschreibung) auf Describe this table (Diese Tabelle beschreiben), um das Beschreibungsfeld zu öffnen.

  4. Geben Sie eine Beschreibung in das Feld ein. Wenn Sie außerhalb des Feldes klicken, wird der Text gespeichert.

    Tabellenbeschreibung

Option 2: DDL-Anweisung verwenden

DDL-Anweisungen (Data Definition Language) ermöglichen das Erstellen und Ändern von Tabellen und Ansichten mithilfe der Standard-SQL-Abfragesyntax.

Weitere Informationen finden Sie unter DDL-Anweisungen verwenden.

  1. Klicken Sie auf Compose Query (Abfrage verfassen).

  2. Geben Sie die DDL-Anweisung im Textbereich Neue Abfrage ein.

     #standardSQL
     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       description="Description of mytable"
     )
     

Befehlszeile

Führen Sie den Befehl bq update mit dem Flag --description aus. Wenn Sie eine Tabelle in einem anderen Projekt als dem Standardprojekt aktualisieren, fügen Sie dem Dataset-Namen die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET].

bq update --description "[DESCRIPTION]" [PROJECT_ID]:[DATASET].[TABLE]

Dabei gilt:

  • [DESCRIPTION] ist der Text zur Beschreibung der Tabelle in Anführungszeichen.
  • [PROJECT_ID] ist Ihre Projekt-ID.
  • [DATASET] ist der Name des Datasets, das die zu aktualisierende Tabelle enthält.
  • [TABLE] ist der Name der Tabelle, die Sie aktualisieren.

Beispiele:

Geben Sie den folgenden Befehl ein, um die Beschreibung von mytable in mydataset in "Description of mytable" zu ändern. mydataset befindet sich in Ihrem Standardprojekt.

bq update --description "Description of mytable" mydataset.mytable

Geben Sie den folgenden Befehl ein, um die Beschreibung von mytable in mydataset in "Description of mytable" zu ändern. mydataset befindet sich in myotherproject und nicht in Ihrem Standardprojekt.

bq update --description "Description of mytable" myotherproject:mydataset.mytable

API

Rufen Sie die Methode tables.patch auf und verwenden Sie das Attribut description, um die Beschreibung der Tabelle in der Tabellenressource zu aktualisieren. Da die Methode tables.update die gesamte Tabellenressource ersetzt, ist die Methode tables.patch zu bevorzugen.

Go

Folgen Sie der Anleitung zur Einrichtung von Go in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Go API.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
tableRef := client.Dataset(datasetID).Table(tableID)
meta, err := tableRef.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.TableMetadataToUpdate{
	Description: "Updated description.",
}
if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

Folgen Sie der Anleitung zur Einrichtung von Java in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

// String datasetName = "my_dataset_name";
// String tableName = "my_table_name";
// String newDescription = "new_description";

Table beforeTable = bigquery.getTable(datasetName, tableName);
TableInfo tableInfo = beforeTable.toBuilder()
    .setDescription(newDescription)
    .build();
Table afterTable = bigquery.update(tableInfo);

Python

Folgen Sie der Anleitung zur Einrichtung von Python in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.

Konfigurieren Sie das Attribut Table.description und rufen Sie Client.update_table() auf, um die Aktualisierung an die API zu senden.

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.description == "Original description."
table.description = "Updated description."

table = client.update_table(table, ["description"])  # API request

assert table.description == "Updated description."

Ablaufzeit einer Tabelle aktualisieren

Sie können auf Dataset-Ebene eine Standardablaufzeit für Tabellen festlegen oder die Ablaufzeit einer Tabelle beim Erstellen festlegen. Die Ablaufzeit einer Tabelle wird auch als "Gültigkeitsdauer" (Time To Live, TTL) bezeichnet.

Wenn Sie die Ablaufzeit einer Tabelle beim Erstellen festlegen, wird die Standardablaufzeit für Tabellen des Datasets ignoriert. Wenn Sie keine Standardablaufzeit für Tabellen auf Dataset-Ebene und keine Ablaufzeit beim Erstellen der Tabelle festlegen, läuft die Tabelle nie ab und Sie müssen die Tabelle manuell löschen.

Nach dem Erstellen der Ansicht können Sie die Ablaufzeit der Ansicht jederzeit so aktualisieren:

  • Mit der GCP Console oder der klassischen BigQuery-Web-UI
  • Mit dem Befehl bq update über die Befehlszeile
  • Durch Aufrufen der API-Methode tables.patch

So aktualisieren Sie die Ablaufzeit einer Tabelle:

Console

Option 1: Ablaufzeit manuell ändern

Sie können keine Ablaufzeit hinzufügen, wenn Sie eine Tabelle mit der BigQuery-Web-UI der Console erstellen. Nachdem die Tabelle erstellt worden ist, können Sie auf der Seite Tabellendetails einen Tabellenablauf hinzufügen oder aktualisieren.

  1. Wählen Sie im Bereich Ressourcen Ihre Tabelle aus.

  2. Klicken Sie unterhalb des Abfrageeditors auf Details.

  3. Klicken Sie auf das Stiftsymbol neben Tabelleninformationen.

  4. Wählen Sie bei Tabellenablauf die Option Datum angeben aus. Wählen Sie dann mit dem Kalender-Widget weiter unten das Ablaufdatum aus.

  5. Klicken Sie zum Speichern auf Aktualisieren. Die aktualisierte Ablaufzeit wird im Abschnitt Tabelleninformationen angezeigt.

Option 2: DDL-Anweisung verwenden

DDL-Anweisungen (Data Definition Language) ermöglichen das Erstellen und Ändern von Tabellen und Ansichten mithilfe der Standard-SQL-Abfragesyntax.

Weitere Informationen finden Sie unter DDL-Anweisungen verwenden.

  1. Klicken Sie auf Compose new query (Neue Abfrage erstellen).

  2. Geben Sie die DDL-Anweisung in den Textbereich des Abfrageeditors ein.

     #standardSQL
     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       -- Sets table expiration to timestamp 2025-02-03 12:34:56
       expiration_timestamp=TIMESTAMP "2025-02-03 12:34:56"
     )
     

Klassische UI

Option 1: Ablaufzeit manuell ändern

  1. Wählen Sie im Navigationsbereich Ihre Tabelle aus.

  2. Klicken Sie auf der Seite Table Details (Tabellendetails) auf Details.

  3. Klicken Sie unter Expiration Time (Ablaufzeit) auf Edit (Bearbeiten).

  4. Klicken Sie im Dialogfeld Update Expiration (Ablauf aktualisieren) auf In und geben Sie eine Ablaufzeit in Tagen ein.

  5. Klicken Sie auf OK. Die aktualisierte Ablaufzeit wird auf der Seite Details angezeigt.

    Tabellenablauf

Option 2: DDL-Anweisung verwenden

DDL-Anweisungen (Data Definition Language) ermöglichen das Erstellen und Ändern von Tabellen und Ansichten mithilfe der Standard-SQL-Abfragesyntax.

Weitere Informationen finden Sie unter DDL-Anweisungen verwenden.

  1. Klicken Sie auf Compose Query (Abfrage verfassen).

  2. Geben Sie die DDL-Anweisung im Textbereich Neue Abfrage ein.

     #standardSQL
     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       -- Sets table expiration to timestamp 2025-02-03 12:34:56
       expiration_timestamp=TIMESTAMP "2025-02-03 12:34:56"
     )
     

Befehlszeile

Führen Sie den Befehl bq update mit dem Flag --expiration aus. Wenn Sie eine Tabelle in einem anderen Projekt als dem Standardprojekt aktualisieren, fügen Sie dem Dataset-Namen die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET].

bq update --expiration [INTEGER] [PROJECT_ID]:[DATASET].[TABLE]

Dabei gilt:

  • [INTEGER] ist die Standardlebensdauer der Tabelle in Sekunden. Der Mindestwert beträgt 3.600 Sekunden bzw. eine Stunde. Die Ablaufzeit entspricht der aktuellen Zeit plus dem ganzzahligen Wert.
  • [PROJECT_ID] ist Ihre Projekt-ID.
  • [DATASET] ist der Name des Datasets, das die zu aktualisierende Tabelle enthält.
  • [TABLE] ist der Name der Tabelle, die Sie aktualisieren.

Beispiele:

Geben Sie den folgenden Befehl ein, um die Ablaufzeit von mytable in mydataset auf 5 Tage (432.000 Sekunden) zu aktualisieren. mydataset befindet sich in Ihrem Standardprojekt.

bq update --expiration 432000 mydataset.mytable

Geben Sie den folgenden Befehl ein, um die Ablaufzeit von mytable in mydataset auf 5 Tage (432.000 Sekunden) zu aktualisieren. mydataset befindet sich in myotherproject und nicht in Ihrem Standardprojekt.

bq update --expiration 432000 myotherproject:mydataset.mytable

API

Rufen Sie die Methode tables.patch auf und verwenden Sie das Attribut expirationTime in der Tabellenressource, um die Ablaufzeit der Tabelle in Millisekunden zu aktualisieren. Da die Methode tables.update die gesamte Tabellenressource ersetzt, ist die Methode tables.patch zu bevorzugen.

Go

Folgen Sie der Anleitung zur Einrichtung von Go in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Go API.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
tableRef := client.Dataset(datasetID).Table(tableID)
meta, err := tableRef.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.TableMetadataToUpdate{
	ExpirationTime: time.Now().Add(time.Duration(5*24) * time.Hour), // table expiration in 5 days.
}
if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

Folgen Sie der Anleitung zur Einrichtung von Java in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

Table beforeTable = bigquery.getTable(datasetName, tableName);

// Set table to expire 5 days from now.
long expirationMillis = DateTime.now().plusDays(5).getMillis();
TableInfo tableInfo = beforeTable.toBuilder()
        .setExpirationTime(expirationMillis)
        .build();
Table afterTable = bigquery.update(tableInfo);

Python

Folgen Sie der Anleitung zur Einrichtung von Python in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.

Konfigurieren Sie das Attribut Table.expires und rufen Sie Client.update_table() auf, um die Aktualisierung an die API zu senden.

import datetime
import pytz

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.expires is None

# set table to expire 5 days from now
expiration = datetime.datetime.now(pytz.utc) + datetime.timedelta(days=5)
table.expires = expiration
table = client.update_table(table, ["expires"])  # API request

# expiration is stored in milliseconds
margin = datetime.timedelta(microseconds=1000)
assert expiration - margin <= table.expires <= expiration + margin

Schemadefinition einer Tabelle aktualisieren

Eine Anleitung zum Aktualisieren der Schemadefinition einer Tabelle finden Sie unter Tabellenschemas ändern.

Tabelle umbenennen

Der Name einer vorhandenen Tabelle kann derzeit nicht geändert werden. Wenn Sie den Tabellennamen ändern möchten, müssen Sie die Tabelle kopieren. Wenn Sie im Kopiervorgang die Zieltabelle angeben, verwenden Sie den neuen Tabellennamen.

Tabelle kopieren

So können Sie eine Tabelle kopieren:

  • Mit der GCP Console oder der klassischen BigQuery-Web-UI
  • Mit dem Befehl bq cp über die Befehlszeile
  • Durch Aufruf der API-Methode jobs.insert und Konfiguration eines Kopierjobs

Erforderliche Berechtigungen

Auf Dataset-Ebene benötigen Sie zum Kopieren einer Tabelle die Zugriffsberechtigung READER für das Quell-Dataset, das die zu kopierende Tabelle enthält, und die Zugriffsberechtigung WRITER für das Ziel-Dataset.

Anstelle von Berechtigungen auf Dataset-Ebene können Sie eine IAM-Rolle auf Projektebene nutzen, die die Berechtigungen bigquery.tables.create und bigquery.tables.getData umfasst. Die Berechtigung bigquery.tables.create wird benötigt, um die Kopie der Tabelle im Ziel-Dataset zu erstellen. Die Berechtigung bigquery.tables.getData ist erforderlich, um die Daten in der zu kopierenden Tabelle zu lesen.

Die folgenden vordefinierten IAM-Rollen auf Projektebene umfassen die Berechtigungen bigquery.tables.create und bigquery.tables.getData für jedes Dataset im Projekt:

Da die Rolle bigquery.user die Berechtigung bigquery.datasets.create umfasst, kann ein Nutzer mit der Rolle bigquery.user die Daten jeder Tabelle in jedem von ihm erstellten Dataset lesen und eine Kopie der Tabelle in jedem von ihm erstellten Dataset erstellen. Erstellt ein Nutzer, der über die Rolle bigquery.user verfügt, ein Dataset, erhält dieser Nutzer OWNER-Zugriff auf das Dataset. Die Zugriffsberechtigung OWNER für ein Dataset gibt dem Nutzer volle Kontrolle über das betreffende Dataset und alle darin enthaltenen Tabellen.

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Zugriffssteuerung. Weitere Informationen zu Rollen auf Dataset-Ebene finden Sie unter Einfache Rollen für Datasets.

Einschränkungen beim Kopieren von Tabellen

Tabellenkopierjobs unterliegen den folgenden Einschränkungen:

  • Für die Zieltabelle gelten beim Kopieren dieselben Namenskonventionen wie beim Erstellen.
  • Tabellenkopien unterliegen den BigQuery-Kontingentrichtlinien für Kopierjobs.
  • Wenn Sie die GCP Console oder die klassische BigQuery-Web-UI für den Kopiervorgang verwenden, können die im Ziel-Dataset vorhandenen Tabellen nicht überschrieben werden. Die Tabelle muss im Ziel-Dataset einen eindeutigen Namen haben.
  • Das Ziel-Dataset muss sich am gleichen Standort befinden wie das Dataset mit der kopierten Tabelle. Beispielsweise ist es nicht möglich, eine Tabelle aus einem europäischen Dataset in ein US-amerikanisches Dataset zu kopieren.
  • Das Kopieren mehrerer Quelltabellen in eine Zieltabelle wird von der GCP Console oder der klassischen BigQuery-Web-UI nicht unterstützt.
  • Wenn Sie mehrere Quelltabellen mit der Befehlszeile oder API in eine Zieltabelle kopieren, müssen alle Quelltabellen identische Schemas haben.

Einzelne Quelltabelle kopieren

So können Sie eine einzelne Tabelle kopieren:

  • Mit der GCP Console oder der klassischen BigQuery-Web-UI
  • Mit dem Befehl bq cp über die Befehlszeile
  • Durch Aufrufen der API-Methode jobs.insert, Konfiguration eines Kopierjobs und Angabe des Attributs sourceTable

Die GCP Console und die klassische BigQuery-Web-UI unterstützen pro Kopierjob nur eine Quelltabelle und eine Zieltabelle. Sie müssen das Befehlszeilentool oder die API verwenden, um mehrere Quelldateien in eine Zieltabelle zu kopieren.

So kopieren Sie eine einzelne Quelltabelle:

Console

  1. Wählen Sie im Bereich Resources (Ressourcen) die Tabelle aus, die Sie kopieren möchten. Klicken Sie unterhalb des Abfrageeditors auf Copy table (Tabelle kopieren).

  2. Im Dialogfeld Copy table (Tabelle kopieren) unter Destination (Ziel):

    • Wählen Sie bei Project name (Projektname) das Projekt aus, in dem die kopierte Tabelle gespeichert wird.
    • Wählen Sie bei Dataset name (Dataset-Name) das Dataset aus, in dem die kopierte Tabelle gespeichert werden soll. Die Quell- und Ziel-Datasets müssen sich am selben Standort befinden.
    • Geben Sie bei Table name (Tabellenname) einen Namen für die neue Tabelle ein. Der Name darf im Ziel-Dataset nur einmal vorkommen. Der Tabellenname kann bis zu 1.024 Zeichen umfassen und darf nur a-z, A-Z, 0-9 oder _ (Unterstrich) enthalten. Mit der BigQuery-Web-UI können Sie keine im Ziel-Dataset vorhandenen Tabellen überschreiben.
  3. Klicken Sie auf Copy (Kopieren), um den Kopierjob zu starten.

Klassische UI

  1. Klicken Sie neben der zu kopierenden Tabelle auf das Symbol "Menü anzeigen" (Abwärtspfeil) und dann auf Copy Table (Tabelle kopieren).

  2. Im Dialogfeld Copy Table (Tabelle kopieren):

    • Wählen Sie unter Destination project (Zielprojekt) das Projekt aus, dem Sie die kopierte Tabelle hinzufügen möchten.
    • Wählen Sie unter Destination dataset (Ziel-Dataset) das Dataset aus, in dem Sie die kopierte Tabelle speichern möchten. Die Quell- und Ziel-Datasets müssen sich am selben Standort befinden.
    • Geben Sie unter Destination table (Zieltabelle) einen Namen für die neue Tabelle ein. Der Name darf im Ziel-Dataset nur einmal vorkommen. Der Tabellenname kann bis zu 1.024 Zeichen umfassen und darf nur a-z, A-Z, 0-9 oder _ (Unterstrich) enthalten. Mit der BigQuery-Web-UI können Sie keine im Ziel-Dataset vorhandenen Tabellen überschreiben.

      Tabelle kopieren

  3. Klicken Sie auf OK, um den Kopiervorgang zu starten.

Befehlszeile

Führen Sie den Befehl bq cp aus. Sie können optionale Flags verwenden, um die Schreibanordnung für die Zieltabelle zu steuern:

  • Mit -a oder --append_table werden die Daten aus der Quelltabelle an eine vorhandene Tabelle im Ziel-Dataset angefügt.
  • Mit -f oder --force werden im Ziel-Dataset vorhandene Tabellen überschrieben, ohne dass Sie aufgefordert werden, den Vorgang zu bestätigen.
  • Mit -n oder --no_clobber wird die folgende Fehlermeldung zurückgegeben, wenn die Tabelle im Ziel-Dataset vorhanden ist: Table '[PROJECT_ID]:[DATASET].[TABLE]' already exists, skipping. Wenn -n nicht angegeben ist, werden Sie standardmäßig aufgefordert anzugeben, ob die Zieltabelle ersetzt werden soll.
  • --destination_kms_key ist der vom Kunden verwaltete Cloud KMS-Schlüssel zum Verschlüsseln der Zieltabelle.

--destination_kms_key wird hier nicht erläutert. Weitere Informationen finden Sie unter Daten mit Cloud KMS-Schlüsseln schützen.

Wenn sich das Quell- oder Ziel-Dataset in einem anderen Projekt als dem Standardprojekt befindet, fügen Sie die Projekt-ID dem bzw. den Dataset-Namen im folgenden Format hinzu: [PROJECT_ID]:[DATASET]

Geben Sie das Flag --location an und legen Sie als Wert Ihren Standort fest.

bq --location=[LOCATION] cp -a -f -n [PROJECT_ID]:[DATASET].[SOURCE_TABLE] [PROJECT_ID]:[DATASET].[DESTINATION_TABLE]

Dabei gilt:

  • [LOCATION] der Name Ihres Standorts ist. Das Flag --location ist optional. Wenn Sie BigQuery beispielsweise in der Region Tokio verwenden, legen Sie für das Flag den Wert asia-northeast1 fest. Mit der Datei ".bigqueryrc" können Sie einen Standardwert für den Standort festlegen.
  • [PROJECT_ID] ist Ihre Projekt-ID.
  • [DATASET] ist der Name des Quell- oder Ziel-Datasets.
  • [SOURCE_TABLE] ist die kopierte Tabelle.
  • [DESTINATION_TABLE] ist der Name der Tabelle im Ziel-Dataset.

Beispiele:

Geben Sie den folgenden Befehl ein, um mydataset.mytable in mydataset2.mytable2 zu kopieren. Beide Datasets befinden sich in Ihrem Standardprojekt und wurden am multiregionalen Standort US erstellt.

bq --location=US cp mydataset.mytable mydataset2.mytable2

Geben Sie den folgenden Befehl ein, um mydataset.mytable zu kopieren und eine Zieltabelle mit demselben Namen zu überschreiben. Das Quell-Dataset befindet sich in Ihrem Standardprojekt. Das Ziel-Dataset befindet sich in myotherproject. Das Kürzel -f wird verwendet, um die Zieltabelle ohne Eingabeaufforderung zu überschreiben. mydataset und myotherdataset wurden am multiregionalen Standort US erstellt.

bq --location=US cp -f mydataset.mytable myotherproject:myotherdataset.mytable

Geben Sie den folgenden Befehl ein, damit mydataset.mytable kopiert und eine Fehlermeldung zurückgegeben wird, wenn das Ziel-Dataset eine Tabelle mit demselben Namen enthält. Das Quell-Dataset befindet sich in Ihrem Standardprojekt. Das Ziel-Dataset befindet sich in myotherproject. Das Kürzel -n wird verwendet, um zu verhindern, dass eine Tabelle mit demselben Namen überschrieben wird. Beide Datasets wurden am multiregionalen Standort US erstellt.

bq --location=US cp -n mydataset.mytable myotherproject:myotherdataset.mytable

Geben Sie den folgenden Befehl ein, um mydataset.mytable zu kopieren und die Daten an eine Zieltabelle mit demselben Namen anzufügen. Das Quell-Dataset befindet sich in Ihrem Standardprojekt. Das Ziel-Dataset befindet sich in myotherproject. Das Kürzel -a wird zum Anfügen an die Zieltabelle verwendet. Beide Datasets wurden am multiregionalen Standort US erstellt.

bq --location=US cp -a mydataset.mytable myotherproject:myotherdataset.mytable

Geben Sie den folgenden Befehl ein, um mydataset.mytable in mydataset2.mytable2 zu kopieren. Beide Datasets befinden sich in Ihrem Standardprojekt. Beide Datasets wurden in der Region asia-northeast1 erstellt.

bq --location=asia-northeast1 cp mydataset.mytable mydataset2.mytable2

API

So kopieren Sie eine Tabelle mit der API:

Sie können eine vorhandene Tabelle über die API kopieren, indem Sie die Methode bigquery.jobs.insert aufrufen und einen Kopierjob (copy) konfigurieren. Geben Sie im Abschnitt jobReference der Jobressource im Attribut location Ihren Standort an.

Geben Sie die folgenden Werte in der Jobkonfiguration an:

"copy": {
      "sourceTable": {       // Required
        "projectId": string, // Required
        "datasetId": string, // Required
        "tableId": string    // Required
      },
      "destinationTable": {  // Required
        "projectId": string, // Required
        "datasetId": string, // Required
        "tableId": string    // Required
      },
      "createDisposition": string,  // Optional
      "writeDisposition": string,   // Optional
    },

Dabei gilt: Mit sourceTable werden Informationen über die zu kopierende Tabelle und mit destinationTable Informationen über die neue Tabelle bereitgestellt. Mit createDisposition wird angegeben, ob die Tabelle erstellt werden soll, falls sie noch nicht vorhanden ist. Mit writeDisposition wird angegeben, ob vorhandene Tabellen überschrieben oder die Daten an vorhandene Tabellen angefügt werden sollen.

C#

Lesen Sie die Anleitung zur Einrichtung von C# in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery C# API.

using Google.Apis.Bigquery.v2.Data;
using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryCopyTable
{
    public void CopyTable(
        string projectId = "your-project-id",
        string destinationDatasetId = "your_dataset_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        TableReference sourceTableRef = new TableReference()
        {
            TableId = "shakespeare",
            DatasetId = "samples",
            ProjectId = "bigquery-public-data"
        };
        TableReference destinationTableRef = client.GetTableReference(
            destinationDatasetId, "destination_table");
        BigQueryJob job = client.CreateCopyJob(
            sourceTableRef, destinationTableRef)
            .PollUntilCompleted();  // Wait for the job to complete.
        // Retrieve destination table
        BigQueryTable destinationTable = client.GetTable(destinationTableRef);
        Console.WriteLine(
            $"Copied {destinationTable.Resource.NumRows} rows from table "
            + $"{sourceTableRef.DatasetId}.{sourceTableRef.TableId} "
            + $"to {destinationTable.FullyQualifiedId}."
        );
    }
}

Go

Folgen Sie der Anleitung zur Einrichtung von Go in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Go API.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
dataset := client.Dataset(datasetID)
copier := dataset.Table(dstID).CopierFrom(dataset.Table(srcID))
copier.WriteDisposition = bigquery.WriteTruncate
job, err := copier.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}
if err := status.Err(); err != nil {
	return err
}

Java

Folgen Sie der Anleitung zur Einrichtung von Java in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

TableId destinationId = TableId.of(dataset, tableName);
JobOption options = JobOption.fields(JobField.STATUS, JobField.USER_EMAIL);
Job job = table.copy(destinationId, options);
// Wait for the job to complete.
try {
  Job completedJob =
      job.waitFor(
          RetryOption.initialRetryDelay(Duration.ofSeconds(1)),
          RetryOption.totalTimeout(Duration.ofMinutes(3)));
  if (completedJob != null && completedJob.getStatus().getError() == null) {
    // Job completed successfully.
  } else {
    // Handle error case.
  }
} catch (InterruptedException e) {
  // Handle interrupted wait
}

Node.js

Lesen Sie die Anleitung zur Einrichtung von Node.js in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');

/**
 * TODO(developer): Uncomment the following lines before running the sample
 */
// const srcDatasetId = "my_src_dataset";
// const srcTableId = "my_src_table";
// const destDatasetId = "my_dest_dataset";
// const destTableId = "my_dest_table";

// Create a client
const bigqueryClient = new BigQuery();

async function copyTable() {
  // Copies src_dataset:src_table to dest_dataset:dest_table.

  // Copy the table contents into another table
  const [job] = await bigqueryClient
    .dataset(srcDatasetId)
    .table(srcTableId)
    .copy(bigqueryClient.dataset(destDatasetId).table(destTableId));

  console.log(`Job ${job.id} completed.`);

  // Check the job's status for errors
  const errors = job.status.errors;
  if (errors && errors.length > 0) {
    throw errors;
  }
}

copyTable();

PHP

Lesen Sie die Anleitung zur Einrichtung von PHP in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery PHP API.

use Google\Cloud\BigQuery\BigQueryClient;
use Google\Cloud\Core\ExponentialBackoff;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $sourceTableId   = 'The BigQuery table ID to copy from';
// $destinationTableId = 'The BigQuery table ID to copy to';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$sourceTable = $dataset->table($sourceTableId);
$destinationTable = $dataset->table($destinationTableId);
$copyConfig = $sourceTable->copy($destinationTable);
$job = $sourceTable->runJob($copyConfig);

// poll the job until it is complete
$backoff = new ExponentialBackoff(10);
$backoff->execute(function () use ($job) {
    print('Waiting for job to complete' . PHP_EOL);
    $job->reload();
    if (!$job->isComplete()) {
        throw new Exception('Job has not yet completed', 500);
    }
});
// check if the job has errors
if (isset($job->info()['status']['errorResult'])) {
    $error = $job->info()['status']['errorResult']['message'];
    printf('Error running job: %s' . PHP_EOL, $error);
} else {
    print('Table copied successfully' . PHP_EOL);
}

Python

Folgen Sie der Anleitung zur Einrichtung von Python in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.

# from google.cloud import bigquery
# client = bigquery.Client()

source_dataset = client.dataset("samples", project="bigquery-public-data")
source_table_ref = source_dataset.table("shakespeare")

# dataset_id = 'my_dataset'
dest_table_ref = client.dataset(dataset_id).table("destination_table")

job = client.copy_table(
    source_table_ref,
    dest_table_ref,
    # Location must match that of the source and destination tables.
    location="US",
)  # API request

job.result()  # Waits for job to complete.

assert job.state == "DONE"
dest_table = client.get_table(dest_table_ref)  # API request
assert dest_table.num_rows > 0

Mehrere Quelltabellen kopieren

So können Sie mehrere Quelltabellen in eine Zieltabelle kopieren:

  • Mit dem Befehl bq cp über die Befehlszeile
  • Durch Aufrufen der Methode jobs.insert, Konfiguration eines Kopierjobs und Angabe des Attributs sourceTables

Alle Quelltabellen müssen identische Schemas haben und es ist nur eine Zieltabelle zulässig.

Quelltabellen müssen als eine durch Kommas getrennte Liste angegeben werden. Sie können keine Platzhalter verwenden, wenn Sie mehrere Quelltabellen kopieren.

So kopieren Sie mehrere Quelltabellen:

Befehlszeile

Führen Sie den Befehl bq cp aus und geben Sie in einer durch Kommas getrennten Liste mehrere Quelltabellen an. Sie können optionale Flags verwenden, um die Schreibanordnung für die Zieltabelle zu steuern:

  • Mit -a oder --append_table werden die Daten aus den Quelltabellen an eine vorhandene Tabelle im Ziel-Dataset angefügt.
  • Mit -f oder --force werden vorhandene Zieltabellen im Ziel-Dataset überschrieben, ohne dass Sie aufgefordert werden, den Vorgang zu bestätigen.
  • Mit -n oder --no_clobber wird die folgende Fehlermeldung zurückgegeben, wenn die Tabelle im Ziel-Dataset vorhanden ist: Table '[PROJECT_ID]:[DATASET].[TABLE]' already exists, skipping. Wenn -n nicht angegeben ist, werden Sie standardmäßig aufgefordert, anzugeben, ob die Zieltabelle ersetzt werden soll.
  • --destination_kms_key ist der vom Kunden verwaltete Cloud KMS-Schlüssel zum Verschlüsseln der Zieltabelle.

--destination_kms_key wird hier nicht erläutert. Weitere Informationen finden Sie unter Daten mit Cloud KMS-Schlüsseln schützen.

Wenn sich das Quell- oder Ziel-Dataset in einem anderen Projekt als dem Standardprojekt befindet, fügen Sie die Projekt-ID dem bzw. den Dataset-Namen im folgenden Format hinzu: [PROJECT_ID]:[DATASET]

Geben Sie das Flag --location an und legen Sie als Wert Ihren Standort fest.

bq --location=[LOCATION] cp -a -f -n [PROJECT_ID]:[DATASET].[SOURCE_TABLE],[PROJECT_ID]:[DATASET].[SOURCE_TABLE] [PROJECT_ID]:[DATASET].[DESTINATION_TABLE]

Dabei gilt:

  • [LOCATION] der Name Ihres Standorts ist. Das Flag --location ist optional. Wenn Sie BigQuery beispielsweise in der Region Tokio verwenden, legen Sie für das Flag den Wert asia-northeast1 fest. Mit der Datei ".bigqueryrc" können Sie einen Standardwert für den Standort festlegen.
  • [PROJECT_ID] ist Ihre Projekt-ID.
  • [DATASET] ist der Name des Quell- oder Ziel-Datasets.
  • [SOURCE_TABLE] ist die kopierte Tabelle.
  • [DESTINATION_TABLE] ist der Name der Tabelle im Ziel-Dataset.

Beispiele:

Geben Sie den folgenden Befehl ein, um mydataset.mytable und mydataset.mytable2 in mydataset2.tablecopy zu kopieren. Alle Datasets befinden sich in Ihrem Standardprojekt und wurden am multiregionalen Standort US erstellt.

bq --location=US cp mydataset.mytable,mydataset.mytable2 mydataset2.tablecopy

Geben Sie den folgenden Befehl ein, um mydataset.mytable und mydataset.mytable2 in myotherdataset.mytable zu kopieren und eine Zieltabelle mit demselben Namen zu überschreiben. Das Ziel-Dataset befindet sich in myotherproject und nicht im Standardprojekt. Das Kürzel -f wird verwendet, um die Zieltabelle ohne Eingabeaufforderung zu überschreiben. Beide Datasets wurden am multiregionalen Standort US erstellt.

bq --location=US cp -f mydataset.mytable,mydataset.mytable2 myotherproject:myotherdataset.mytable

Geben Sie den folgenden Befehl ein, um myproject:mydataset.mytable und myproject:mydataset.mytable2 zu kopieren und eine Fehlermeldung zurückzugeben, wenn das Ziel-Dataset eine Tabelle mit demselben Namen enthält. Das Ziel-Dataset befindet sich in myotherproject. Das Kürzel -n wird verwendet, um zu verhindern, dass eine Tabelle mit demselben Namen überschrieben wird. Alle Datasets wurden am multiregionalen Standort US erstellt.

bq --location=US cp -n myproject:mydataset.mytable,myproject:mydataset.mytable2 myotherproject:myotherdataset.mytable

Geben Sie den folgenden Befehl ein, um mydataset.mytable und mydataset.mytable2 zu kopieren und die Daten an eine Zieltabelle mit demselben Namen anzufügen. Das Quell-Dataset befindet sich in Ihrem Standardprojekt. Das Ziel-Dataset befindet sich in myotherproject. Das Kürzel -a wird zum Anfügen an die Zieltabelle verwendet. Alle Datasets wurden am multiregionalen Standort US erstellt.

bq --location=US cp -a mydataset.mytable,mydataset.mytable2 myotherproject:myotherdataset.mytable

Geben Sie den folgenden Befehl ein, um mydataset.mytable und mydataset.mytable2 in mydataset2.tablecopy zu kopieren. Alle Datasets befinden sich in Ihrem Standardprojekt und wurden in der Region asia-northeast1 erstellt.

bq --location=asia-northeast1 cp mydataset.mytable,mydataset.mytable2 mydataset2.tablecopy

API

Wenn Sie mehrere Tabellen mit der API kopieren möchten, rufen Sie die Methode jobs.insert auf, konfigurieren Sie einen Kopierjob und geben Sie das Attribut sourceTables an.

Geben Sie mit dem Attribut location im Abschnitt jobReference der Jobressource Ihre Region an.

Go

Folgen Sie der Anleitung zur Einrichtung von Go in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Go API.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
dataset := client.Dataset(datasetID)

srcTableIDs := []string{"table1", "table2"}
var tableRefs []*bigquery.Table
for _, v := range srcTableIDs {
	tableRefs = append(tableRefs, dataset.Table(v))
}
copier := dataset.Table(dstTableID).CopierFrom(tableRefs...)
copier.WriteDisposition = bigquery.WriteTruncate
job, err := copier.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}
if err := status.Err(); err != nil {
	return err
}

Java

Folgen Sie der Anleitung zur Einrichtung von Java in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

TableId destinationTable = TableId.of(datasetId, destinationTableId);
CopyJobConfiguration configuration =
    CopyJobConfiguration.newBuilder(
        destinationTable,
        Arrays.asList(
            TableId.of(datasetId, "table1"),
            TableId.of(datasetId, "table2")))
    .build();

// Copy the tables.
Job job = bigquery.create(JobInfo.of(configuration));
job = job.waitFor();

// Check the table
StandardTableDefinition table = bigquery.getTable(destinationTable).getDefinition();
System.out.println("State: " + job.getStatus().getState());
System.out.printf("Copied %d rows.\n", table.getNumRows());

Python

Folgen Sie der Anleitung zur Einrichtung von Python in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.

# from google.cloud import bigquery
# client = bigquery.Client()
# source_dataset_id = 'my_source_dataset'
# dest_dataset_id = 'my_destination_dataset'

table1_ref = client.dataset(source_dataset_id).table("table1")
table2_ref = client.dataset(source_dataset_id).table("table2")
dest_table_ref = client.dataset(dest_dataset_id).table("destination_table")

job = client.copy_table(
    [table1_ref, table2_ref],
    dest_table_ref,
    # Location must match that of the source and destination tables.
    location="US",
)  # API request
job.result()  # Waits for job to complete.

assert job.state == "DONE"
dest_table = client.get_table(dest_table_ref)  # API request
assert dest_table.num_rows > 0

Tabellen löschen

So löschen Sie eine Tabelle:

  • Mit der GCP Console oder der klassischen BigQuery-Web-UI
  • Mit dem Befehl bq rm über die Befehlszeile
  • Durch Aufrufen der API-Methode tables.delete

Derzeit können Sie nur eine Tabelle auf einmal löschen.

Wenn Sie eine Tabelle löschen, werden die Daten in der Tabelle ebenfalls gelöscht. Sie können einstellen, dass Tabellen nach einem bestimmten Zeitraum automatisch gelöscht werden. Legen Sie dazu den Standard-Tabellenablauf für das Dataset fest oder geben Sie beim Erstellen der Tabelle die Ablaufzeit ein.

Erforderliche Berechtigungen

Zum Löschen von Tabellen benötigen Sie die Zugriffsberechtigung OWNER auf Dataset-Ebene oder eine IAM-Rolle auf Projektebene mit den bigquery.tables.delete-Berechtigungen. Die folgenden vordefinierten IAM-Rollen auf Projektebene umfassen die Berechtigung bigquery.tables.delete:

Nutzer mit einer vordefinierten Rolle auf Projektebene können Tabellen in jedem Dataset im Projekt löschen. Nutzer mit der Zugriffsberechtigung OWNER auf Dataset-Ebene können Tabellen nur im entsprechenden Dataset löschen.

Da die Rolle bigquery.user die Berechtigung bigquery.datasets.create umfasst, kann ein Nutzer mit der Rolle bigquery.user Tabellen in jedem von ihm erstellten Dataset löschen. Erstellt ein Nutzer, der die Rolle bigquery.user hat, ein Dataset, erhält dieser Nutzer OWNER-Zugriff auf das Dataset. Die Zugriffsberechtigung OWNER für ein Dataset gibt dem Nutzer volle Kontrolle über das betreffende Dataset und alle darin enthaltenen Tabellen.

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Zugriffssteuerung. Weitere Informationen zu Rollen auf Dataset-Ebene finden Sie unter Einfache Rollen für Datasets.

Tabelle löschen

So löschen Sie eine Tabelle:

Console

  1. Wählen Sie im Bereich Resource (Ressourcen) Ihre Tabelle aus. Klicken Sie unterhalb des Abfrageeditors auf Delete table (Tabelle löschen).
  2. Geben Sie den Namen der Tabelle im Dialogfeld ein und klicken Sie zur Bestätigung auf Delete (Löschen).

Klassische UI

  1. Klicken Sie in der Navigationsleiste neben dem Tabellennamen auf den Abwärtspfeil (Abwärtspfeilsymbol) und dann auf Delete table (Tabelle löschen).

  2. Wenn Sie dazu aufgefordert werden, klicken Sie zur Bestätigung auf OK.

Befehlszeile

Verwenden Sie den Befehl bq rm mit dem Flag --table oder dem Kürzel -t, um eine Tabelle zu löschen. Wenn Sie die Befehlszeile zum Entfernen einer Tabelle verwenden, müssen Sie den Befehl bestätigen. Sie können das Flag --force oder das Kürzel -f verwenden, um die Bestätigung zu überspringen.

Wenn sich die Tabelle in einem anderen Projekt als dem Standardprojekt befindet, fügen Sie dem Dataset-Namen die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET].

bq rm -f -t [PROJECT_ID]:[DATASET].[TABLE]

Dabei gilt:

  • [PROJECT_ID] ist Ihre Projekt-ID.
  • [DATASET] ist der Name des Datasets, das die Tabelle enthält.
  • [TABLE] ist der Name der zu löschenden Tabelle.

Beispiele:

Geben Sie den folgenden Befehl ein, um mytable aus mydataset zu löschen. mydataset befindet sich im Standardprojekt.

bq rm -t mydataset.mytable

Geben Sie den folgenden Befehl ein, um mytable aus mydataset zu löschen. mydataset befindet sich in myotherproject und nicht im Standardprojekt.

bq rm -t myotherproject:mydataset.mytable

Geben Sie den folgenden Befehl ein, um mytable aus mydataset zu löschen. mydataset befindet sich im Standardprojekt. Durch das Kürzel -f in diesem Befehl wird die Bestätigung übersprungen.

bq rm -f -t mydataset.mytable

API

Rufen Sie die API-Methode tables.delete auf und geben Sie mit dem Parameter tableId die zu löschende Tabelle an.

C#

Lesen Sie die Anleitung zur Einrichtung von C# in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery C# API.

using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryDeleteTable
{
    public void DeleteTable(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id",
        string tableId = "your_table_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        client.DeleteTable(datasetId, tableId);
        Console.WriteLine($"Table {tableId} deleted.");
    }
}

Go

Folgen Sie der Anleitung zur Einrichtung von Go in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Go API.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
table := client.Dataset(datasetID).Table(tableID)
if err := table.Delete(ctx); err != nil {
	return err
}

Java

Folgen Sie der Anleitung zur Einrichtung von Java in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

TableId tableId = TableId.of(projectId, datasetName, tableName);
boolean deleted = bigquery.delete(tableId);
if (deleted) {
  // the table was deleted
} else {
  // the table was not found
}

Node.js

Lesen Sie die Anleitung zur Einrichtung von Node.js in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');

async function deleteTable() {
  // Deletes "my_table" from "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_dataset";
  // const tableId = "my_table";

  // Create a client
  const bigqueryClient = new BigQuery();

  // Delete the table
  await bigqueryClient
    .dataset(datasetId)
    .table(tableId)
    .delete();

  console.log(`Table ${tableId} deleted.`);
}
deleteTable();

PHP

Lesen Sie die Anleitung zur Einrichtung von PHP in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery PHP API.

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $tableId = 'The BigQuery table ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
$table->delete();
printf('Deleted table %s.%s' . PHP_EOL, $datasetId, $tableId);

Python

Folgen Sie der Anleitung zur Einrichtung von Python in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the table to fetch.
# table_id = 'your-project.your_dataset.your_table'

# If the table does not exist, delete_table raises
# google.api_core.exceptions.NotFound unless not_found_ok is True
client.delete_table(table_id, not_found_ok=True)
print("Deleted table '{}'.".format(table_id))

Ruby

Lesen Sie die Anleitung zur Einrichtung von Ruby in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Ruby API.

require "google/cloud/bigquery"

def delete_table dataset_id = "my_dataset_id", table_id = "my_table_id"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id
  table    = dataset.table table_id

  table.delete

  puts "Table #{table_id} deleted."
end

Gelöschte Tabelle wiederherstellen

Eine gelöschte Tabelle kann innerhalb von zwei Tagen nach dem Löschen wiederhergestellt werden. Mit der Snapshot Decorator-Funktion können Sie vor dem Löschvorgang auf eine Tabelle verweisen und sie dann kopieren. Es gibt jedoch zwei grundlegende Vorbehalte beim Erstellen einer Referenz auf diese Weise:

  • Sie können nicht auf eine gelöschte Tabelle verweisen, wenn nach dem Löschen eine Tabelle erstellt wurde, die im Dataset die gleiche ID hat.

  • Sie können nicht auf eine gelöschte Tabelle verweisen, wenn nach dem Löschen der Tabelle das kapselnde Dataset ebenfalls gelöscht wurde.

Befehlszeile

Verwenden Sie den Snapshot Decorator @<time>, um eine Tabelle mithilfe des Legacy-SQL-Dialekts wiederherzustellen. Ermitteln Sie zuerst einen UNIX-Zeitstempel in Millisekunden für die Zeit, in der die Tabelle existiert hat. Kopieren Sie die Tabelle dann mit diesem Zeitstempel in eine neue Tabelle. Die neue Tabelle muss einen anderen Namen als die gelöschte Tabelle haben.

Geben Sie beispielsweise den folgenden Befehl ein, um mydataset.mytable zum Zeitpunkt 1418864998000 in die neue Tabelle mydataset.newtable zu kopieren.

Geben Sie das Flag --location an und legen Sie als Wert Ihren Standort fest.

bq --location=[LOCATION] cp mydataset.mytable@1418864998000 mydataset.newtable

Weitere Informationen finden Sie unter Tabellen-Decorators im Legacy-SQL-Dialekt.

Go

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")

ds := client.Dataset(datasetID)
if _, err := ds.Table(tableID).Metadata(ctx); err != nil {
	return err
}
// Record the current time.  We'll use this as the snapshot time
// for recovering the table.
snapTime := time.Now()

// "Accidentally" delete the table.
if err := client.Dataset(datasetID).Table(tableID).Delete(ctx); err != nil {
	return err
}

// Construct the restore-from tableID using a snapshot decorator.
snapshotTableID := fmt.Sprintf("%s@%d", tableID, snapTime.UnixNano()/1e6)
// Choose a new table ID for the recovered table data.
recoverTableID := fmt.Sprintf("%s_recovered", tableID)

// Construct and run a copy job.
copier := ds.Table(recoverTableID).CopierFrom(ds.Table(snapshotTableID))
copier.WriteDisposition = bigquery.WriteTruncate
job, err := copier.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}
if err := status.Err(); err != nil {
	return err
}

Java

Folgen Sie der Anleitung zur Einrichtung von Java in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

// String datasetId = "my_dataset";
String tableId = "oops_undelete_me";

// Record the current time.  We'll use this as the snapshot time
// for recovering the table.
long snapTime = Instant.now().getMillis();

// "Accidentally" delete the table.
bigquery.delete(TableId.of(datasetId, tableId));

// Construct the restore-from tableID using a snapshot decorator.
String snapshotTableId = String.format("%s@%d", tableId, snapTime);
// Choose a new table ID for the recovered table data.
String recoverTableId = String.format("%s_recovered", tableId);

// Construct and run a copy job.
CopyJobConfiguration configuration =
    CopyJobConfiguration.newBuilder(
        TableId.of(datasetId, recoverTableId),
        TableId.of(datasetId, snapshotTableId))
    .build();
Job job = bigquery.create(JobInfo.of(configuration));
job = job.waitFor();

// Check the table
StandardTableDefinition table = bigquery.getTable(
        TableId.of(datasetId, recoverTableId)).getDefinition();
System.out.println("State: " + job.getStatus().getState());
System.out.printf("Recovered %d rows.\n", table.getNumRows());

Python

Folgen Sie der Anleitung zur Einrichtung von Python in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.

# TODO(developer): Uncomment the lines below and replace with your values.
# import time
# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_id = 'my_dataset'  # Replace with your dataset ID.
# table_id = 'my_table'      # Replace with your table ID.

table_ref = client.dataset(dataset_id).table(table_id)

# TODO(developer): Choose an appropriate snapshot point as epoch
# milliseconds. For this example, we choose the current time as we're about
# to delete the table immediately afterwards.
snapshot_epoch = int(time.time() * 1000)

# "Accidentally" delete the table.
client.delete_table(table_ref)  # API request

# Construct the restore-from table ID using a snapshot decorator.
snapshot_table_id = "{}@{}".format(table_id, snapshot_epoch)
source_table_ref = client.dataset(dataset_id).table(snapshot_table_id)

# Choose a new table ID for the recovered table data.
recovered_table_id = "{}_recovered".format(table_id)
dest_table_ref = client.dataset(dataset_id).table(recovered_table_id)

# Construct and run a copy job.
job = client.copy_table(
    source_table_ref,
    dest_table_ref,
    # Location must match that of the source and destination tables.
    location="US",
)  # API request

job.result()  # Waits for job to complete.

print(
    "Copied data from deleted table {} to {}".format(table_id, recovered_table_id)
)

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...