Ошибка при попытке вставить значения в запрос Postgres внутри скрипта Bash - PullRequest
0 голосов
/ 23 октября 2018

Я выполняю запрос следующим образом:

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 голосов
/ 23 октября 2018

Используйте 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)"

Конструкция $ () выполняет printf в подоболочке.

...