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?

Daniel Waechter
quelle

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' 
Mikhail Berlyant
quelle
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

bsmarcosj
quelle
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
Soumendra Mishra
quelle
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