bq-Befehlszeilentool verwenden

Das bq-Befehlszeilentool ist ein Python-basiertes Befehlszeilentool für BigQuery. Diese Seite bietet allgemeine Informationen zur Verwendung des bq-Befehlszeilentools.

Eine vollständige Referenz aller bq-Befehle und -Flags finden Sie in der Referenz zum bq-Befehlszeilentool.

Hinweis

Bevor Sie das bq-Befehlszeilentool verwenden können, müssen Sie mit der Google Cloud Console ein Projekt erstellen oder auswählen.

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. BigQuery ist in neuen Projekten automatisch aktiviert. Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu Aktivieren Sie die BigQuery API.

    Aktivieren Sie die API

    .
  4. Optional: Aktivieren Sie die Abrechnung für das Projekt. Die Abrechnung funktioniert auch dann, wenn Sie die Abrechnung nicht aktivieren oder keine Kreditkarte angeben möchten. BigQuery bietet eine Sandbox zum Ausführen dieser Schritte.

bq-Befehle in Cloud Shell eingeben

Sie können die Befehle des bq-Befehlszeilentools in Cloud Shell entweder über die Google Cloud Console oder über das Cloud SDK eingeben.

Flags und Argumente positionieren

Das bq-Befehlszeilentool unterstützt zwei Arten von Flags:

  • Globale Flags können in allen Befehlen verwendet werden.
  • Befehlsspezifische Flags gelten für einen bestimmten Befehl.

Eine Liste der verfügbaren globalen und befehlsspezifischen Flags finden Sie in der Referenz zum bq-Befehlszeilentool.

Fügen Sie globale Flags vor dem Befehl bq ein und fügen Sie dann befehlsspezifische Flags ein. Sie können mehrere globale oder befehlsspezifische Flags verwenden. Beispiel:

bq --location=us mk --reservation --project_id=project reservation_name

Sie können Befehlsargumente auf folgende Arten angeben:

  • --FLAG ARGUMENT (wie in den vorherigen Beispielen gezeigt)
  • --FLAG=ARGUMENT
  • --FLAG='ARGUMENT'
  • --FLAG="ARGUMENT"
  • --FLAG 'ARGUMENT'
  • --FLAG "ARGUMENT"

Dabei gilt:

  • FLAG: ein globales oder befehlsspezifisches Flag
  • ARGUMENT: das Argument des Flags

Bei einigen Befehlen müssen Argumente in einfache oder doppelte Anführungszeichen gesetzt werden. Dies gilt vor allem dann, wenn das Argument Leerzeichen, Kommas oder andere Sonderzeichen enthält. Beispiel:

bq query --nouse_legacy_sql \
'SELECT
   COUNT(*)
 FROM
   `bigquery-public-data`.samples.shakespeare'

Flags mit booleschen Werten können ohne Argument angegeben werden. Wenn Sie true oder false angeben, müssen Sie das Format FLAG=ARGUMENT verwenden.

Der folgende Befehl gibt beispielsweise für das boolesche Flag --use_legacy_sql "false" an, da vor dem Flag no hinzugefügt wird:

bq query --nouse_legacy_sql \
'SELECT
   COUNT(*)
 FROM
   `bigquery-public-data`.samples.shakespeare'

Alternativ können Sie, um false als Argument des Flags anzugeben, Folgendes eingeben:

bq query --use_legacy_sql=false \
'SELECT
   COUNT(*)
 FROM
   `bigquery-public-data`.samples.shakespeare'

Abfragen über das bq-Befehlszeilentool ausführen

Gehen Sie wie folgt vor, um eine Abfrage, die Sie in der Google Cloud Console entwickelt haben, über das bq-Befehlszeilentool auszuführen:

  1. Fügen Sie die Abfrage so in einen bq query-Befehl ein: bq query --use_legacy_sql=false 'QUERY'. Ersetzen Sie QUERY durch die Abfrage.
  2. Ersetzen Sie in der Abfrage alle einfachen Anführungszeichen (') durch doppelte Anführungszeichen (").
  3. Kommentare aus der Abfrage entfernen.

Beispiel: Transformieren Sie die folgende Google Cloud Console-Abfrage:

-- count Shakespeare's use of the string "raisin"
SELECT
  word,
  SUM(word_count) AS count
FROM
  `bigquery-public-data`.samples.shakespeare
WHERE
  word LIKE '%raisin%'
GROUP BY
  word

in eine Abfrage des bq-Befehlszeilentools:

bq query --use_legacy_sql=false \
'SELECT
  word,
  SUM(word_count) AS count
FROM
  `bigquery-public-data`.samples.shakespeare
WHERE
  word LIKE "%raisin%"
GROUP BY
  word'

Weitere Informationen finden Sie unter Interaktive Jobs und Batch-Abfragejobs ausführen.

Hilfe

Geben Sie die folgenden Befehle ein, um Hilfe für das bq-Befehlszeilentool zu erhalten:

  • Geben Sie für die installierte Version des bq-Befehlszeilentools bq version ein.
  • Wenn Sie eine vollständige Liste der Befehle wünschen, geben Sie bq help ein.
  • Wenn Sie eine Liste der globalen Flags sehen möchten, geben Sie bq --help ein.
  • Wenn Sie Hilfe zu einem bestimmten Befehl benötigen, geben Sie bq help COMMAND ein.
  • Wenn Sie Hilfe zu einem bestimmten Befehl sowie eine Liste der globalen Flags wünschen, geben Sie bq COMMAND --help ein.

Ersetzen Sie COMMAND durch den Befehl, bei dem Sie Hilfe benötigen.

Standardwerte für Befehlszeilen-Flags festlegen

Sie können Standardwerte für Befehlszeilen-Flags festlegen. Dazu beziehen Sie diese in die Konfigurationsdatei .bigqueryrc des bq-Befehlszeilentools ein. Bevor Sie Ihre Standardoptionen konfigurieren, müssen Sie zuerst eine .bigqueryrc-Datei erstellen. Sie können zum Erstellen der Datei Ihren bevorzugten Texteditor verwenden. Nachdem Sie die Datei .bigqueryrc erstellt haben, können Sie den Pfad zur Datei mit dem globalen Flag --bigqueryrc angeben.

Wenn das Flag --bigqueryrc nicht angegeben ist, wird die Umgebungsvariable BIGQUERYRC verwendet. Wenn diese nicht angegeben ist, wird der Pfad ~/.bigqueryrc verwendet. Der Standardpfad ist $HOME/.bigqueryrc.

Flags zu .bigqueryrc hinzufügen

So fügen Sie .bigqueryrc Standardwerte für Befehlszeilen-Flags hinzu:

  • Fügen Sie globale Flags ohne Kopfzeilen am Anfang der Datei ein.
  • Geben Sie für befehlsspezifische Flags in Klammern den Befehlsnamen ein und fügen Sie nach dem Befehlsnamen das befehlsspezifische Flag (eines pro Zeile) hinzu.

Beispiel:

--apilog=stdout
--format=prettyjson
--location=US

[query]
--use_legacy_sql=false
--max_rows=100
--maximum_bytes_billed=10000000

[load]
--destination_kms_key=projects/myproject/locations/mylocation/keyRings/myRing/cryptoKeys/myKey

Im vorherigen Beispiel werden Standardwerte für die folgenden Flags festgelegt:

  • Das globale Flag --apilog ist auf stdout gesetzt, um die Debugging-Ausgabe in der Cloud Console auszugeben.
  • Das globale Flag --format ist auf prettyjson gesetzt, um die Befehlsausgabe in einem für Menschen lesbaren JSON-Format anzuzeigen.
  • Das globale Flag --location ist auf den multiregionalen Standort US gesetzt.
  • Das query-befehlsspezifische Flag --use_legacy_sql wurde auf false gesetzt, um Standard-SQL als Standardabfragesyntax zu verwenden.

  • Das query-befehlsspezifische Flag --max_rows wurde auf 100 gesetzt, um die Anzahl der Zeilen in der Abfrageausgabe zu steuern.

  • Das query-befehlsspezifische Flag --maximum_bytes_billed wird auf 10.000.000 Byte (10 MB) gesetzt, damit keine Abfragen durchgeführt werden, die mehr als 10 MB Daten lesen.

  • Das load-befehlsspezifische Flag--destination_kms_key ist auf projects/myproject/locations/mylocation/keyRings/myRing/cryptoKeys/myKey gesetzt.

bq-Befehlszeilentool in einer interaktiven Shell ausführen

Sie können das bq-Befehlszeilentool in einer interaktiven Shell ausführen. Hier brauchen Sie den Befehlen nicht bq voranzustellen. Zum Starten des interaktiven Modus geben Sie bq shell ein. Nach dem Start der Shell ändert sich die Eingabeaufforderung in die ID Ihres Standardprojekts. Zum Beenden des interaktiven Modus geben Sie exit ein.

bq-Befehlszeilentool in einem Skript ausführen

Sie können das bq-Befehlszeilentool in einem Skript ausführen, so wie Sie einen gcloud-Befehlszeilenbefehl ausführen. Das folgende Beispiel zeigt die Befehle gcloud und bq in einem Bash-Skript:

#!/bin/bash
gcloud config set project myProject
bq query --use_legacy_sql=false --destination_table=myDataset.myTable \
'SELECT
   word,
   SUM(word_count) AS count
 FROM
   `bigquery-public-data`.samples.shakespeare
 WHERE
   word LIKE "%raisin%"
 GROUP BY
   word'

bq-Befehle über ein Dienstkonto ausführen

Wenn Sie bq-Befehle mit einem Dienstkonto ausführen möchten, müssen Sie den Zugriff auf Google Cloud vom Dienstkonto aus autorisieren. Weitere Informationen finden Sie unter gcloud auth activate-service-account.

Beispiele

Befehlszeilenbeispiele finden Sie im gesamten Anleitungsabschnitt der BigQuery-Dokumentation. Nachfolgend sind Links zu gängigen Befehlszeilenaufgaben aufgeführt, etwa zum Erstellen, Abrufen, Auflisten, Löschen und Ändern von BigQuery-Ressourcen.

Ressourcen erstellen

Informationen zum Erstellen von Ressourcen mit dem bq-Befehlszeilentool finden Sie hier:

Beispiele zum Erstellen einer Tabelle mit einer Datendatei finden Sie unter Daten laden.

Informationen zu Ressourcen abrufen

Informationen zum Abrufen von Ressourcen mit dem bq-Befehlszeilentool finden Sie unter:

Ressourcen auflisten

Informationen zum Auflisten von Ressourcen mit dem bq-Befehlszeilentool finden Sie unter:

Ressourcen aktualisieren

Informationen zum Aktualisieren von Ressourcen mit dem bq-Befehlszeilentool finden Sie hier:

Daten laden

Informationen zum Laden von Daten mit dem bq-Befehlszeilentool finden Sie unter:

Daten abfragen

Informationen zum Abfragen von Daten mit dem bq-Befehlszeilentool finden Sie unter:

Externe Datenquellen verwenden

Informationen zum Abfragen von Daten in externen Datenquellen mit dem bq-Befehlszeilentool finden Sie unter:

Daten exportieren

Informationen zum Exportieren von Daten mit dem bq-Befehlszeilentool finden Sie unter:

BigQuery Data Transfer Service verwenden

Weitere Informationen zur Verwendung des bq-Befehlszeilentools mit dem BigQuery Data Transfer Service finden Sie unter:

Fehlerbehebung für das bq-Befehlszeilentool

In diesem Abschnitt erfahren Sie, wie Sie Probleme mit dem bq-Befehlszeilentool beheben.

Cloud SDK auf dem neuesten Stand halten

Wenn Sie das bq-Befehlszeilentool des Cloud SDK verwenden, achten Sie darauf, dass die neuesten Funktionen und Fehlerkorrekturen für das bq-Befehlszeilentool vorhanden sind, indem Sie Ihre Cloud SDK-Installation auf dem neuesten Stand halten. Geben Sie den folgenden Befehl in Cloud Shell ein, um festzustellen, ob Sie die neueste Version des Cloud SDK ausführen:

gcloud components list

In den ersten beiden Zeilen der Ausgabe werden die Versionsnummer der aktuellen Cloud SDK-Installation und die Versionsnummer des neuesten Cloud SDK angezeigt. Wenn Sie feststellen, dass Ihre Version nicht mehr aktuell ist, können Sie Ihre Cloud SDK-Installation auf die neueste Version aktualisieren. Geben Sie dazu den folgenden Befehl in Cloud Shell ein:

gcloud components update

Debugging

Mit den folgenden Befehlen können Sie Fehler im bq-Befehlszeilentool beheben:

  • Gesendete und empfangene Anfragen ansehen. Fügen Sie das Flag --apilog=PATH_TO_FILE hinzu, um ein Log des Vorgangs in einer lokalen Datei zu speichern. Ersetzen Sie PATH_TO_FILE durch den Pfad, unter dem Sie das Log speichern möchten. Das bq-Befehlszeilentool führt standardmäßige REST-basierte API-Aufrufe durch, deren Anzeige nützlich sein kann. Es ist auch hilfreich, wenn Sie beim Melden von Problemen dieses Log als Anhang hinzufügen. Wenn Sie anstelle eines Pfads - oder stdout verwenden, wird das Log in der Google Cloud Console ausgegeben. Wenn Sie --apilog auf stderr setzen, erfolgt die Ausgabe in die Standardfehlerdatei.

  • Fehlerbehebung. Geben Sie das Flag --format=prettyjson ein, wenn Sie den Jobstatus abrufen oder sich detaillierte Informationen zu Ressourcen wie Tabellen und Datasets anzeigen lassen möchten. Mit diesem Flag wird die Antwort im JSON-Format einschließlich des Attributs reason ausgegeben. Mit dem Attribut reason können Sie Schritte zur Fehlerbehebung suchen.