2017-07-27 85 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