Вопрос

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

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

Есть ли простой способ передать переменные в прилагаемые сценарии в PSQL?

Я использую PSQL версию 9.3.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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top