Gibt es eine Möglichkeit, das Schema einer BigQuery-Tabelle als JSON zu exportieren?


73

Eine BigQuery- Tabelle verfügt über ein Schema, das in der Web-Benutzeroberfläche angezeigt, aktualisiert oder zum Laden von Daten mit dem bqTool als JSON-Datei verwendet werden kann. Ich kann jedoch keine Möglichkeit finden, dieses Schema aus einer vorhandenen Tabelle in eine JSON-Datei (vorzugsweise über die Befehlszeile) zu sichern. Ist das möglich?

Antworten:


111

Eine Möglichkeit, das Schema aus einer vorhandenen Tabelle in eine JSON-Datei (vorzugsweise über die Befehlszeile) zu sichern. Ist das möglich?

versuchen Sie es unten

bq show bigquery-public-data:samples.wikipedia  

Sie können das Flag –format verwenden, um die Ausgabe zu verschönern

--format: keine | json | hübschjson | csv | sparse | hübsch:

Format für die Befehlsausgabe. Zu den Optionen gehören:

none:       ...
pretty:     formatted table output  
sparse:     simpler table output  
prettyjson: easy-to-read JSON format  
json:       maximally compact JSON  
csv:        csv format with header   

Die ersten drei sollen für den Menschen lesbar sein, und die letzten drei sollen an ein anderes Programm übergeben werden. Wenn kein Format ausgewählt ist, wird eines basierend auf dem Befehlslauf ausgewählt.

Als mir klar wurde, dass ich eine teilweise Antwort gegeben habe: o)

Unten macht was PO wollte

bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq '.schema.fields' 

Vielen Dank. Ich suchte weiter nach anderen Schlüsselwörtern wie "export" und "dump" sowie dem Wort "schema", und keines der Dokumente für "show" hatte das.
Daniel Waechter

1
Ich würde empfehlen, den Befehl bq direkt in der Google Cloud SDK-Shell zu untersuchen. Beginnen Sie einfach mit bq --help und ...: o)
Mikhail Berlyant

5
Für die Nachwelt macht dieser Befehl, was ich wollte: bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq '.schema.fields'
Daniel Waechter

3
Fügen Sie einfach "> yourfile.json" am Ende ohne Anführungszeichen hinzu
fpopic

1
Bei Fenstern stellte ich fest, dass das Anführungszeichen "anstelle des Apostrophs benötigt wird ', also wie folgt:bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq ".schema.fields"
Philshem

71

Sie können das Flag --schema[1] hinzufügen , um Tabellendateninformationen zu vermeiden.

bq show --schema --format=prettyjson [PROJECT_ID]:[DATASET].[TABLE] > [SCHEMA_FILE]

bq show --schema --format=prettyjson mydataset.mytable > /tmp/myschema.json

[1] https://cloud.google.com/bigquery/docs/managing-table-schemas


2
Ausgezeichnet! Es sieht so aus, als ob dies einige Monate, nachdem ich diese Frage gestellt habe, in Cloud SDK Version 165 hinzugefügt wurde. Viel besser als sich darauf zu verlassen jq.
Daniel Waechter

0

Sie können den REST-API-Aufruf verwenden, um das BigQuery-Tabellenschema als JSON abzurufen. Dokumentationslink: https://cloud.google.com/bigquery/docs/reference/rest/v2/tables/get

curl 'https://bigquery.googleapis.com/bigquery/v2/projects/project-name/datasets/dataset-name/tables/table-name' \
     --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
     --header 'Accept: application/json' \
     --compressed

Vielen Dank dafür - ich habe nach der API-Version gesucht. Gibt es eine Möglichkeit, dies ohne einen HTTP-Aufruf zu tun? Ist eine Funktion wie diese genau das, wie alle "nativ" aussehenden Funktionen der API unter der Haube aussehen? (Ich meine, dass normale Funktionen keine HTTP-Aufrufe sind). Ich möchte nur nicht, dass es langsam ist und "Anrufe" scheinen langsam zu sein.
Makmak

Wenn ich normalerweise Daten usw. lade, muss ich zum Beispiel nicht an Authentifizierung denken. @ Soumendra Mishra
Makmak
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.