2017-07-27 73 views
0

我想查詢BigQuery中分區的總數並將結果存儲在mysql表中。我正在爲此進行監控。將BQ查詢的輸出分配給變量

#!/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>> 

在mysql表格中插入時出現錯誤。這可能是因爲變量$ result既包括報頭和值,即

變量$結果認爲:與頭

值貌似更改爲MyQuery將能夠插入數據,如果我只得到價值。 我應該如何賦值給shell變量,然後使用它?

編輯:任何sql輸出包含column_name和值。我分配用於存儲來自BigQuery的值的變量也包含兩個值,即column_name和value。我正在尋找一些對提取唯一值有幫助的東西。

+0

的可能的複製[如何設置爲從輸出變量命令在Bash?](https://stackoverflow.com/questions/4651437/how-to-set-a-variable-to-the-output-from-a-command-in-bash) – l0b0

+0

@ I0b0我已更新問題 – Logical

+0

它仍然是重複的。看看鏈接的問題。只提取值是一個完全獨立的問題解決[這裏](https://stackoverflow.com/questions/9558867/how-to-fetch-field-from-mysql-query-result-in-bash) – l0b0

回答

2

只需將--quiet標誌(忽略狀態更新,而作業運行)和管道將它添加到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

非常感謝! – Logical