используя psql переменных в комплекте идут скрипты


UPDATE: эта специфическая проблема не связана со сценариями, включенными в psql. Переменные в включенных сценариях интерполируются, как и ожидалось. Фактическая проблема возникает в результате использования переменных psql внутри $$ quotes в определениях функций SQL и описывается в этом вопросе .

Я использую переменные psql для задания некоторых параметров (имена таблиц, значения) из командной строки в довольно длинном SQL-скрипте. Сценарий стал слишком длинным, и я разбил его на несколько частей. включил их в основной скрипт, используя синтаксис ir subscript.sql. Однако переменные из основного скрипта не передаются в нижние индексы. Это странно, потому что в документации говорится, что i file является эквивалентом файла ввода на клавиатуре, т. е. среда скрипта должна быть сохранена.

Есть ли простой способ передать переменные включенным скриптам в psql?

Я использую psql версии 9.3.1.

1 2

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;