2017-07-27 2 views
0

Ich versuche, die Gesamtzahl einer Partition in BigQuery abzufragen und das Ergebnis in einer MySQL-Tabelle zu speichern. Ich mache das zu Überwachungszwecken.Zuordnung der Ausgabe einer BQ-Abfrage zur Variablen

#!/bin/sh 
query1="bq query --format=csv 'SELECT COUNT(1) as Count FROM [dataset.tablename] WHERE _PARTITIONTIME = TIMESTAMP(\"$date\")'" 
eval result=\$\($query1\) 
echo "$result" 

bq_insertquery="insert into <<table>>(<<column>>) values(${result})" 
echo $bq_insertquery | mysql -u root -p <<dbname>> 

Ich bekomme Fehler beim Einfügen in MySQL-Tabelle. Dies ist wahrscheinlich, weil das Variable $ Ergebnis beinhaltet sowohl die Header und den Wert, dh

Variable $ result gilt: Wert mit dem Header

Sieht aus wie MyQuery der Lage sein wird, Daten einfügen, wenn ich nur den Wert erhalten . Wie sollte ich einer Shell-Variablen nur Wert zuweisen und danach verwenden?

Bearbeiten: Jede SQL-Ausgabe enthält column_name und Werte. Die Variable, die zugewiesen wurde, um den Wert von BigQuery zu speichern, enthält auch beide, d. H. Spalte_Name und Wert. Ich suche nach etwas, das hilfreich wäre, nur Wert zu extrahieren.

+0

Mögliches Duplikat [Wie eine Variable mit dem Ausgang von einem eingestellt Befehl in Bash?] (https://stackoverflow.com/questions/4651437/how-to-set-a-variable-to-the-output-from-a-command-in-bash) – l0b0

+0

@ I0b0 Ich habe aktualisiert die Frage – Logical

+0

Es ist immer noch ein Duplikat. Sehen Sie sich die verlinkte Frage an. Extrahieren nur der Wert ist ein vollständig separates Problem [hier] gelöst (https://stackoverflow.com/questions/9558867/how-to-fetch-field-from-mysql-query-result-in-bash) – l0b0

Antwort

2

Fügen Sie einfach den --quiet Flag (ignorieren Status-Updates, während Aufträge ausgeführt werden) und eine Pipe an awk:

query1="bq query --quiet --format=csv 'SELECT COUNT(1) as Count FROM [dataset.tablename] WHERE _PARTITIONTIME = TIMESTAMP(\"$date\")' | awk '{if(NR>1)print}'" 

enter image description here

+0

Vielen Dank !!! – Logical

Verwandte Themen