尝试在Bash脚本内的Postgres查询中插入值时出错

时间:2018-10-22 23:37:22

标签: bash postgresql sql-insert

我正在执行查询,如下所示:

ssh user@XX.XX.1XX.XX "PGPASSWORD=myPassword psql -U psqlUser -h XX.XX.XX.XX -p 5432 -d myDB -c
'INSERT INTO table(\"CPU_IDLE_TIME\",\"TOTAL_SIZE\",\"USED_SIZE\",\"USED_STORAGE_P\") VALUES ($idlecputime,$totalSize,$usedSize,$usedStoragePercentage)';"

我通过snmpwalks获得此查询之前的值。为了使查询正常工作,值必须用单引号('')引起来。我尝试将单引号放在变量周围,但是每次出现错误时,因为查询已经被“'”包围。我似乎找不到引号的配置或对引号进行转义以使其正常工作。

变量的类型为var char,integer和float。

我遇到的一个错误:

ERROR:  syntax error at or near ","

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用printf为您设置字符串格式

ssh user@XX.XX.1XX.XX "PGPASSWORD=myPassword psql -U psqlUser -h XX.XX.XX.XX -p 5432 -d myDB -c ""$(printf 'INSERT INTO table("CPU_IDLE_TIME","TOTAL_SIZE","USED_SIZE","USED_STORAGE_P") VALUES (%d, %d, %d, %d);' $idlecputime $totalSize $usedSize $usedStoragePercentage)"

$()构造在子shell中执行printf。