SAS / ACCESS и клиентская кодировка для Greenplum (PostgreSQL) - PullRequest
0 голосов
/ 21 ноября 2011

я пытаюсь найти способ проинструктировать драйверы ODBC - ODBC для Datadirect использовать win1251 для сеанса клиента.

Существуют способы, упомянутые в Руководстве пользователя:

  1. Использование \Команда кодирования в psql, которая позволяет изменять кодировку клиента на лету.
  2. Использование SET client_encoding TO: => SET CLIENT_ENCODING TO 'value';
  3. Использование переменной среды PGCLIENTENCODING.
  4. Установка параметра конфигурации client_encoding в файле postgresql.conf

Но, насколько я понимаю, варианты 1 и 3 не подходят для драйверов ODBC, вариант 2 я также не смог использовать -потому что я использую SAS, и этот движок не позволяет мне выполнять вручную отредактированные SQL - он использует много автоматических кодов.

Я пробовал вариант client_encoding в файле postgresql.conf, более того, я устал выполнятьclommand в сеансе администрирования psql: alter user sasuser SET client_encoding to WIN1251;, но ничего не меняется - по умолчанию кодировка клиента по-прежнему UTF8 ...

currВ файле ODBC.ini Datadirect у меня есть следующая строка:

IANAAppCodePage=2251

Может кто-нибудь помочь мне, пожалуйста?

1 Ответ

2 голосов
/ 21 ноября 2011

Это определенно должно сработать:

ALTER USER sasuser SET client_encoding TO WIN1251;

Только оставшиеся объяснения могут быть:

  • Вы фактически подключаетесь к БД с другим пользователем.
  • В какой-то момент во время соединения client_encoding явно установлено другое значение.
  • Вы подключаетесь к неправильному кластеру базы данных (тот же IP? Тот же порт?)

Чтобы выяснить, установите log_statements = all, перезагрузите кластер серверов, запустите сеанс с вашим недружественным для пользователя инструментом и проверьте журнал базы данных, если и что было фактически передано на сервер. Не забудьте сбросить log_statements, иначе ваши файлы журнала станут огромными.


Или это всего лишь опечатка в Datadirect ODBC.ini:

IANAAppCodePage=2251

Это должно быть 1251?

Неа. IANAAppCodePage MIBenum 2251 означает «WINDOWS_1251». Это не так.

...