2017-03-20 6 views
1

Ich habe eine Abfrage, die Zeilen zum Einfügen in eine Tabelle generiert. Die Abfrage verweist auf Tabellen in verschiedenen Projekten. Die Projektnamen enthalten einen Bindestrich (z. B. abc-xyz). Wenn ich versuche, den Befehl bq zu verwenden und `` zu verwenden, um den Projektnamen einzufügen, erhalte ich einen Fehler, und wenn nicht, erhalte ich einen Fehler, und wenn ich einzelne oder doppelte Anführungszeichen oder Klammern versuche, bekomme ich immer noch Fehler. Gibt es eine Möglichkeit, ein anderes Projekt mit Bindestrich in einer Abfrage mit dem Befehl bq zu referenzieren? HierProbleme mit Verweis auf Projektnamen, die Bindestrich bei der Verwendung von BQ Befehlszeilen-Tool

ist das, was ich bekomme, wenn ich einen Beispielbefehl ausführen:

bq Abfrage --use_legacy_sql = false „wählen account_id, max (aktualisiert) max_updated, max (_PARTITIONTIME) max_pt von abc-xyz .myset.mytable Gruppe von 1"

-bash: abc-xyz: Befehl nicht

gefunden

Wenn ich kopieren und einfügen, dass die gleiche Abfrage strin in der Benutzeroberfläche, es funktioniert gut.

Dank

+0

Was ist der Befehl, den Sie ausführen möchten? –

+0

Ich habe den Befehl, den ich ausgeführt habe, zum Beitrag hinzugefügt. – FZF

Antwort

0

Idealerweise sollten Sie ganzen Tabellenverweis in Back-Zecken umschließen - also statt

`abc-xyz`.myset.mytable 

versuchen

`abc-xyz.myset.mytable` 
mich nicht nur

Projekt

+0

Danke für den Vorschlag. Versuchte es und den gleichen Fehler. – FZF

1

In Zusätzlich zu Mikhails Vorschlag, wenn Sie Inhalte in Ihrer Abfrage haben, die mit der Bash-Syntax in Konflikt stehen (s uch als Anführungszeichen und Dollarzeichen), besteht ein anderer Ansatz darin, Ihre Abfrage in eine Datei zu schreiben, z. my_query.sql, und führt:

bq query --use_legacy_sql=false < my_query.sql 

Dies wird Rohr des unmodifizierten Inhalt der Datei auf das bq Werkzeug.

+0

Danke für den Vorschlag. Das Problem bei diesem Ansatz besteht darin, dass wir eine Reihe von (sql) Befehlen haben, die ausgeführt werden müssen und einige andere Befehle enthalten können (wie das Laden einer Datei mittels API-Aufruf). Wir müssen alle Verarbeitungen/Befehle, die für einen Job an einem Ort passieren, nicht in Dateien verteilen. – FZF

Verwandte Themen