изменить кодировку utf8 в оракуле - PullRequest
0 голосов
/ 09 октября 2019

У меня проблема с преобразованием данных на казахском языке из одного оракула БД в другой оракул. Исходная база данных имеет AL32UTF8 NLS_CHARACTERSET (согласно v $ nls_parameters), цель имеет CL8MSWIN1251, как решить эту проблему? Я вставил raw с informatica

Ответы [ 2 ]

0 голосов
/ 10 октября 2019
The Problem was in code type in target database. Client support utf16.
I decieded to solve it with translate function.

create or replace function fix_kaz_letters(p_word in varchar2) return varchar2 deterministic
  PARALLEL_ENABLE is
  c_bad_letters CONSTANT VARCHAR2(18 CHAR) := CHR(1112 USING NCHAR_CS) /*ә*/
                                              || CHR(1032 USING NCHAR_CS) /*Ә*/
                                              || CHR(1110 USING NCHAR_CS) /*і*/
                                              || CHR(1030 USING NCHAR_CS) /*І*/
                                              || CHR(1169 USING NCHAR_CS) /*ө*/
                                              || CHR(1168 USING NCHAR_CS) /*Ө*/
                                              || CHR(1111 USING NCHAR_CS) /*ү*/
                                              || CHR(1031 USING NCHAR_CS) /*Ү*/
                                              || CHR(1118 USING NCHAR_CS) /*ұ*/
                                              || CHR(1038 USING NCHAR_CS) /*Ұ*/
                                              || CHR(1171 USING NCHAR_CS) /*ғ*/
                                              || CHR(1170 USING NCHAR_CS) /*Ғ*/
                                              || CHR(1179 USING NCHAR_CS) /*қ*/
                                              || CHR(1178 USING NCHAR_CS) /*Қ*/
                                              || CHR(1187 USING NCHAR_CS) /*ң*/
                                              || CHR(1186 USING NCHAR_CS) /*Ң*/
   ;
  c_kaz_letters CONSTANT VARCHAR2(18 NCHAR) := CHR(1241 USING NCHAR_CS) /*ә*/
                                               || CHR(1240 USING NCHAR_CS) /*Ә*/
                                               || CHR(1110 USING NCHAR_CS) /*і*/
                                               || CHR(1030 USING NCHAR_CS) /*І*/
                                               || CHR(1257 USING NCHAR_CS) /*ө*/
                                               || CHR(1256 USING NCHAR_CS) /*Ө*/
                                               || CHR(1199 USING NCHAR_CS) /*ү*/
                                               || CHR(1198 USING NCHAR_CS) /*Ү*/
                                               || CHR(1201 USING NCHAR_CS) /*ұ*/
                                               || CHR(1200 USING NCHAR_CS) /*Ұ*/
                                               || CHR(1108 USING NCHAR_CS) /*ғ*/
                                               || CHR(1028 USING NCHAR_CS) /*Ғ*/
                                               || CHR(1116 USING NCHAR_CS) /*қ*/
                                               || CHR(1036 USING NCHAR_CS) /*Қ*/
                                               || CHR(1109 USING NCHAR_CS) /*ң*/
                                               || CHR(1029 USING NCHAR_CS) /*Ң*/
   ;
begin
  return translate(p_word, c_bad_letters, c_kaz_letters);
end;
0 голосов
/ 09 октября 2019

Согласно КАК: установить переменную среды Oracle NLS_LANG you

установить переменную среды NLS_LANG на компьютере, на котором размещены службы Informatica, равным значению, которое является ОС клиента Oracleusing.

Для меня не ясно, что означает «значение, которое использует операционная система Oracle Client».

Если Informatica работает на Linux / Unix, это может быть легко. Проверьте с помощью locale charmap или echo $LANG

В Windows у вас фактически есть два набора символов. Кодовая страница OEM , которая применяется в консоли (также известное как окно DOS), и кодовая страница ANSI , которая обычно применяется в приложениях с графическим интерфейсом.

Кодовая страница OEM, которую можно запросить (и изменить)) с командой chcp

Кодовая страница ANSI, которую вы можете получить из реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP для Справочник по API поддержки национальных языков (NLS)

Я не знаюкакой из них относится к Informatica, но вы должны попробовать.

...