Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ora2pg. NLS настройки / 6 сообщений из 6, страница 1 из 1
12.01.2016, 14:09
    #39145481
Генератор
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora2pg. NLS настройки
Здравствуйте товарищи! Подскажите пжлста, переношу таблицы с Oracle в PostgreSQL через ora2pg. SQL-файл формируется нормально, тока вот кириллица не хочет нормально переносится, кракозябры.
ora2pg -t SHOW_ENCODING выдает:
[root@kz-postgre ora2pg-master]# ora2pg -t SHOW_ENCODING
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Current encoding settings that will be used by Ora2Pg:
        Oracle NLS_LANG AMERICAN_AMERICA.UTF8
        Oracle NLS_NCHAR AL32UTF8
        Oracle NLS_TIMESTAMP_FORMAT YYYY-MM-DD HH24:MI:SS.FF
        Oracle NLS_DATE_FORMAT YYYY-MM-DD HH24:MI:SS
        PostgreSQL CLIENT_ENCODING UTF8
        Perl output encoding :utf8
Showing current Oracle encoding and possible PostgreSQL client encoding:
        Oracle NLS_LANG AMERICAN_AMERICA.CL8ISO8859P5
        Oracle NLS_NCHAR CL8ISO8859P5
        Oracle NLS_TIMESTAMP_FORMAT YYYY-MM-DD HH24:MI:SS.FF
        Oracle NLS_DATE_FORMAT YYYY-MM-DD HH24:MI:SS
        PostgreSQL CLIENT_ENCODING ISO_8859_5



Пробовал различные вариации настроек языковых параметров в ora2pg.conf, не помогает. Что подскажите уважаемые?
...
Рейтинг: 0 / 0
12.01.2016, 15:20
    #39145562
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora2pg. NLS настройки
Генератор,

SQL файл в какой кодировке формируется ?
В какой кодировке БД постгреса (что показывает psql -l) ?
...
Рейтинг: 0 / 0
12.01.2016, 15:26
    #39145570
Генератор
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora2pg. NLS настройки
Павел Лузанов,

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
-bash-4.2$ psql -l
                                     List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |      Access privileges
-----------+----------+----------+-------------+-------------+-----------------------------
 postgre   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres               +
           |          |          |             |             | postgres=CTc/postgres      +
           |          |          |             |             | dba=CTc/postgres           +
           |          |          |             |             | pc_key_manager=CTc/postgres
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres                +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres                +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)



Формирвоать SQL-файл пробовал в разных кодировках, изменяя NLS_LANG и NLS_NCHAR в ora2pg.conf. Результат один и тот же
...
Рейтинг: 0 / 0
12.01.2016, 15:40
    #39145586
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora2pg. NLS настройки
Генератор,

Вот в какой кодировке файл, в такую нужно и CLIENT_ENCODING для постгреса поставить.

Предполагаю, что оракловая база в CL8ISO8859P5, значит её можно выгрузить именно в этой кодировке,
а для CLIENT_ENCODING поставить ISO_8859_5.

Собственно это в графе "possible PostgreSQL client encoding" и указано.
...
Рейтинг: 0 / 0
13.01.2016, 05:55
    #39146022
Генератор
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora2pg. NLS настройки
Павел Лузанов,
Сделал так:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ora2pg -t SHOW_ENCODING
Current encoding settings that will be used by Ora2Pg:
        Oracle NLS_LANG AMERICAN_AMERICA.CL8ISO8859P5
        Oracle NLS_NCHAR CL8ISO8859P5
        Oracle NLS_TIMESTAMP_FORMAT YYYY-MM-DD HH24:MI:SS.FF
        Oracle NLS_DATE_FORMAT YYYY-MM-DD HH24:MI:SS
        PostgreSQL CLIENT_ENCODING ISO_8859_5
        Perl output encoding :utf8
Showing current Oracle encoding and possible PostgreSQL client encoding:
        Oracle NLS_LANG AMERICAN_AMERICA.CL8ISO8859P5
        Oracle NLS_NCHAR CL8ISO8859P5
        Oracle NLS_TIMESTAMP_FORMAT YYYY-MM-DD HH24:MI:SS.FF
        Oracle NLS_DATE_FORMAT YYYY-MM-DD HH24:MI:SS
        PostgreSQL CLIENT_ENCODING ISO_8859_5


Но все равно не помогает. В current encoding есть параметр Perl output encoding :utf8 - он может влиять?
...
Рейтинг: 0 / 0
13.01.2016, 12:51
    #39146334
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora2pg. NLS настройки
Генератор,

Посмотрел в документацию на ora2pg.
Кодировка perl однозначно влияет. И при смене NLS_LANG с UTF её нужно "set it to raw".

Еще одной проблемой использования ISO8859P5 может быть то, что соответствующая локаль не установлена в системе.
Проверь, что она есть в списке: locale -a

Вообще, автор предлагает не трогать настройки по умолчанию, где NLS_LANG=AMERICAN_AMERICA.AL32UTF8.
Выгдядит разумно: подключение к оракл, запись perl, подключение к pg - всё в UTF и должно работать корректно.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ora2pg. NLS настройки / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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