如何在shell脚本中将tablename作为参数传递给Bigquery命令行
查询语句未将如何在shell脚本中将tablename作为参数传递给Bigquery命令行,shell,google-bigquery,Shell,Google Bigquery,查询语句未将$f视为select语句中的参数。这是由于勾号['] 这里有一个工作代码(我使用了数字): 在SQL语句周围使用单引号。使用双引号,变量将插入:“从项目id.dataset\u名称中选择*。$f其中1=2”按照建议将单引号替换为双引号,但在bq查询时会抛出错误--使用\u legacy\u sql=False--目标\u表数据集\u名称。$f'从项目\u id.dataset\u名称中选择*。$f其中1=2'bq查询--使用\u legacy\u sql=False--目标\u表数据
$f
视为select语句中的参数。这是由于勾号[']
这里有一个工作代码(我使用了数字):
在SQL语句周围使用单引号。使用双引号,变量将插入:
“从项目id.dataset\u名称中选择*。$f其中1=2”
按照建议将单引号替换为双引号,但在bq查询时会抛出错误--使用\u legacy\u sql=False--目标\u表数据集\u名称。$f'从项目\u id.dataset\u名称中选择*。$f
其中1=2'bq查询--使用\u legacy\u sql=False--目标\u表数据集\u名称。$f“select*fromproject\u id.dataset\u name.$f
where 1=2”语法错误:意外的关键字where at[1:16]可能您的shell将project\u id.dataset\u name.$f
周围的反勾(```)解释为一个子命令。请尝试将其省略或使用反斜杠引用。
#creating tables with schema only:
for f in $list;
do
echo "event name :::::$f"
bq query --use_legacy_sql=False --destination_table dataset_name.$f 'select * from `project_id.dataset_name.$f` where 1=2'
done
for i in {1..3}
do
echo "TABLE $i"
bq query --use_legacy_sql=false 'select * from `<project>.<database>.'$i'`'
done
bq query --use_legacy_sql=False --destination_table dataset_name.$f 'select * from `project_id.dataset_name.'$f'` where 1=2'