используя psql переменных в комплекте идут скрипты
UPDATE: эта специфическая проблема не связана со сценариями, включенными в psql. Переменные в включенных сценариях интерполируются, как и ожидалось. Фактическая проблема возникает в результате использования переменных psql внутри $$ quotes в определениях функций SQL и описывается в этом вопросе .
Я использую переменные psql для задания некоторых параметров (имена таблиц, значения) из командной строки в довольно длинном SQL-скрипте. Сценарий стал слишком длинным, и я разбил его на несколько частей. включил их в основной скрипт, используя синтаксис ir subscript.sql
. Однако переменные из основного скрипта не передаются в нижние индексы. Это странно, потому что в документации говорится, что i file
является эквивалентом файла ввода на клавиатуре, т. е. среда скрипта должна быть сохранена.
Есть ли простой способ передать переменные включенным скриптам в psql?
Я использую psql версии 9.3.1.
1 ответ:
Взгляните на
--variable=
на http://www.postgresql.org/docs/current/static/app-psql.htmlНапр.
psql -d somedb -U someuser -f yourscript.sql --variable=Foo=foobar
В вашем сценарии вы могли бы иметь:
UPDATE sometable SET somecol = :Foo;