我正在尝试在shell脚本中自动执行Big Query作业,但是在尝试执行此操作时出现错误。我正在读取包含两列的本地CSV文件,逐行读取并使用以下脚本更新值:
#!/bin/bash
IFS=","
while read f1 f2
do
echo "De $f1 para $f2"
bq query --use_legacy_sql=false "UPDATE agendas_usuarios.tb_usuarios SET cargo='${f2}' WHERE cargo='${f1}'"
done < cargos_ps.csv
但是我遇到语法错误:未关闭 字符串文字位于[1:47]。
我已经看到一些Shell Script不允许在双引号内使用单引号的说法,对吗?如果是这样,在Shell中完成此工作的最佳方法是什么?我真的需要用另一种编程语言进行开发吗?
我的CSV读数正确,bq查询之前的回显正确显示。
答案 0 :(得分:1)
我不确定实际问题是什么(也许有必要对引号进行转义),但是使用query parameters意味着您不需要直接将字符串插入查询中,并且可以避免该问题你看到了。您想要这样的东西:
$from_date = "2019/01/12";
$to_date = "2019/01/15";
$from_date_unix = strtotime($from_date);
$to_date_unix = strtotime($to_date);
$result = mysql_query("SELECT * FROM logs WHERE date >= " . $from_date_unix . " AND date <= " . $to_date_unix . " ORDER by id DESC");
while($row = mysql_fetch_array($result)) {
// display results here
}