Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Передача переменных среды в psql (Windows) / 9 сообщений из 9, страница 1 из 1
18.06.2020, 15:29
    #39970555
person1534
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача переменных среды в psql (Windows)
Здравствуйте, товарищи :)

Вопрос, ну, минимум на 100 рублей. Есть у меня пакетный файл:

@ECHO OFF
CHCP 1251
SET RULE_ID=%1
SET RULE_GUID=some new GUID from whatever source

%1 - всегда целое число

Далее есть скрипт:

\set current_rule_id `ECHO %RULE_ID%`
\set current_rule_guid `ECHO %RULE_GUID%`
blah-blah-blah

И

%PSQL% -d %CSTR% -f script.sql

Сможете объяснить, почему это не работает? Причем специфически не работает именно RULE_ID, а RULE_GUID становится кошерным UUID.

Workaround известный:

%PSQL% -d %CSTR% -c "\set current_rule_id %RULE_ID%" -f guid_blah-blah-blah.sql

Но я не очень понимаю, почему оно так.

Заранее спасибо.

С уважением.
...
Рейтинг: 0 / 0
18.06.2020, 16:38
    #39970579
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача переменных среды в psql (Windows)
person1534,

Попробовал повторить, вроде работает:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
C:\Users\Pavel\psql>type b.cmd
@ECHO OFF
CHCP 1251
SET RULE_ID=%1

psql -f s.sql

C:\Users\Pavel\psql>type s.sql
\set current_rule_id `ECHO %RULE_ID%`
\echo :current_rule_id

C:\Users\Pavel\psql>b.cmd 123
Текущая кодовая страница: 1251
123


В windows есть нюанс с получением вывода `команд ОС`. Сам psql обрезает из вывода финальный символ перевода строки. Но в windows же еще и символ возврата каретки ставится (если ничего не изменилось). Если обратиться к переменной как :'current_rule_id' то вылезет \r.
...
Рейтинг: 0 / 0
18.06.2020, 16:55
    #39970587
person1534
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача переменных среды в psql (Windows)
Павел,

Я рад бы предположить, что psql знает, кто сидит за терминалом. И когда это я, то он включает особый mod. Но слабо верится.

Видимо, вывод subshell cmd.exe он воспринимает идущим в UTF-8(?) И радостно бросается это декодировать. Там даже вывод об ошибке приходит лишь частично. Значение само есть, но что-то с ним капитально не так.
...
Рейтинг: 0 / 0
18.06.2020, 17:21
    #39970593
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача переменных среды в psql (Windows)
person1534
Видимо, вывод subshell cmd.exe он воспринимает идущим в UTF-8(?) И радостно бросается это декодировать. Там даже вывод об ошибке приходит лишь частично. Значение само есть, но что-то с ним капитально не так.

А какой PostgreSQL используете?
У меня вот отсюда , и там точно что-то с кодировками починили(решены проблемы с кодировкой не латинских сообщений).
...
Рейтинг: 0 / 0
18.06.2020, 17:45
    #39970600
person1534
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача переменных среды в psql (Windows)
Павел Лузанов
person1534
Видимо, вывод subshell cmd.exe он воспринимает идущим в UTF-8(?) И радостно бросается это декодировать. Там даже вывод об ошибке приходит лишь частично. Значение само есть, но что-то с ним капитально не так.

А какой PostgreSQL используете?
У меня вот отсюда , и там точно что-то с кодировками починили(решены проблемы с кодировкой не латинских сообщений).


Павел,

12 версия. И с русским языком, как таковым проблем нет. Он вставляется корректно, читается во всех клиентах. Тут что-то не с локалью, а с передачей строк между средой cmd.exe и командным интерпретатором. Кто-то/что-то/куда-то.

(У меня год назад такая же баталия имело место со скриптингом для MySQL. Там вообще все было US English, даже Windows :) И все равно были ситуации, когда строки забавным образом менялись.)
...
Рейтинг: 0 / 0
18.06.2020, 17:48
    #39970601
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача переменных среды в psql (Windows)
person1534,

А PostgreSQL всё-таки где брали?
...
Рейтинг: 0 / 0
18.06.2020, 17:52
    #39970602
person1534
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача переменных среды в psql (Windows)
Павел,

Я его нигде не брал. Мне его дали. IT безопасность принесла "безопасное".
...
Рейтинг: 0 / 0
19.06.2020, 10:32
    #39970770
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача переменных среды в psql (Windows)
person1534,

Я не большой специалист в этом вопросе, просто предположил, что раз у меня ваш пример работает, то дело возможно в дистрибутиве PostgreSQL для windows.
...
Рейтинг: 0 / 0
19.06.2020, 10:48
    #39970781
person1534
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача переменных среды в psql (Windows)
Павел,


У меня в некоторых вопросах нет выбора. Такова реальность, данная мне в ощущениях :)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Передача переменных среды в psql (Windows) / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]