Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Теоретические аспекты и практические реализации создания, внедрения и использования баз данных, СУБД, хранилищ.
  • Страница:
  • 1
  • 2

ТЕМА: Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i

Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i 21 июль 2011 08:23 #2640

  • BadWolf
  • BadWolf аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 50
  • Спасибо получено: 0
Возникла следующая проблема.

Есть дамп БД, был сделан на Sun, кодировка - AMERICAN_AMERICA.CL8ISO8859P5 .
Надо - корректно импортировать БД в Oracle 9i, чтобы работали функции Upper(char), lower(char) от русских слов.

Если ставить NLS_LANG=AMERICAN_AMERICA.CL8ISO8859P5 ,
то все замечательно, НО эти функции - не пашут, а как раз это - критично.

Если ставить NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251 - кодировку по умолчанию, то функции пашут, но база читается
в абракадабре.

Насколько я понимаю, с этой проблемой много кто сталкивается, но никакого вразумительного решения я не нашел.

Подскажите, что тут можно сделать.
Буду очень признательна за любые мысли по этому поводу.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i 21 июль 2011 08:26 #2641

  • vetal
  • vetal аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 49
  • Спасибо получено: 0
надо ставить кодировку русскую, но при импорте надо использовать функцию convert и преобразовывать кодировку из AMERICAN_AMERICA.CL8ISO8859P5 в RUSSIAN_CIS.CL8MSWIN1251

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i 21 июль 2011 08:29 #2642

  • BadWolf
  • BadWolf аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 50
  • Спасибо получено: 0
Дело в том, что при инсталляции Oracle я установила charset CL8ISO8859P5.
Теперь, когда я ставлю NLS_LANG = ..WIN1251 , при импорте Oracle пишет, что
...import done in ...win1251
import server uses ...8859P5
export client uses ...8859P5
export server uses ...8859P5

И база не преобразуется.

Создаю процедуру :

AS
BEGIN
CONVERT('ОЛРЛОРлододдРЛР',CL8MSWIN1251,CL8ISO8859P5) ;
END;

или

AS
BEGIN
CONVERT(table.column,CL8MSWIN1251,CL8ISO8859P5) ;
END;

На что мне выдается :

'CONVERT' не является процедурой или не определена

Нужно какие-то дополнительные системные скрипты запускать, чтобы поставить пакет с Convert - ом ?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i 21 июль 2011 08:30 #2643

Дык это ж функция:)

update my_table set my_column = CONVERT(my_column, 'CL8MSWIN1251', 'CL8ISO8859P5');

Только проверь на кошках сперва, вдруг не получится, так совсем непонятно станет, из какой кодировки в какую надо конвертить.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i 21 июль 2011 08:32 #2644

  • BadWolf
  • BadWolf аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 50
  • Спасибо получено: 0
Странно - все сделала, все равно не пашет в win1251 . Отображает черт знает что.

По шагам :

1.Поставила Oracle9i с WIN1251
2.Заменила в реестре NLS_LANG на CL8ISO8859P5
3.Перезапустила
4.Импортировала базу (нормально видны русские символы)
5.Сконвертила столбец в WIN1251(нормальные символы стали зябликами)
6.Переставила в реестре NLS_LANG в WIN1251
7.Перезапустила

И нифига! Все равно кракозяблики.

Наверное, придется сначало выгружать данные SQLPLUS-ом, а потом-грузить SQL-Loader-ом

Подскажите, пожалуйста, как можно выгрузить данные в текстовый файл SQLPLUS-ом?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i 21 июль 2011 08:33 #2645

А если так:
1.поставить cl8mswin1251
2.сделать импорт.

В CL8ISO8859P5 ИМХО не надо лить данные. Либо же.
1.поставить CL8ISO8859P5
2.сделать импорт.
3.поставить cl8mswin1251
4.открыть сессию
5.скзать convert(string, 'CL8ISO8859P5', 'cl8mswin1251') ;

Хотя, честно говоря, это все мои домыслы. Какой-то набор правильных действий наверняка существует, надо только угадать его:)А старая база, из которой был дамп сделан, еще живая? К ней можно из новой по линку обратиться?

А если плюсом занные выгружать, то скажи просто:

set long 32767 pagesize 0 linesize 800 feedback off echo off verify off trims on

spool exp.txt

select * from scott.emp;

spool off

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2