powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
16 сообщений из 16, страница 1 из 1
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32098221
il79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла следующая проблема.

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

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

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

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

Подскажите, что тут можно сделать.
Буду очень признателен за любые мысли по этому поводу.
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32098359
Ste@lth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
надо ставить кодировку русскую, но при импорте надо использовать функцию convert и преобразовывать кодировку из AMERICAN_AMERICA.CL8ISO8859P5 в RUSSIAN_CIS.CL8MSWIN1251
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099106
il79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>надо ставить кодировку русскую, но при импорте надо использовать функцию convert и преобразовывать кодировку из AMERICAN_AMERICA.CL8ISO8859P5 в RUSSIAN_CIS.CL8MSWIN1251

Ste@lth, спасибо за совет.
Ты имеешь ввиду , что надо поставить при импорте БД значение параметра утилиты imp - CHARSET=CL8ISO8859P5 ?
Причем NLS должен стоять ...WIN1251 так ?

Или в каком смысле - использовать функцию convert ?
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099297
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая функция CONVERT:
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96529/ch7.htm#4967
Насколько я понял, можно попробовать после импорта изменить значения всех строк посредством этой фукнции. Или вот еще совет по экспорту/импорту:
http://groups.google.com/groups?hl=ru&lr=lang_ru&ie=UTF-8&oe=UTF-8&th=952b1b3a7e881fca&rnum=1
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099323
il79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что при инсталляции Oracle я установил charset CL8ISO8859P5.
Теперь, когда я ставлю NLS_LANG = ..WIN1251 , при импорте Oracle пишет, что
...import done in ...win1251
import server uses ...8859P5
export client uses ...8859P5
export server uses ...8859P5

И база не преобразуется.
Сейчас буду ставить Orace с CHARSET ...WIN1251, может - будет преобразовываться.
Попробую так.

Есть у кого - нибудь мысли на этот счет?
Может быть это можно сделать проще ?
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099328
il79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Denis, спасибо за совет!
Сейчас попробую!!
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099567
il79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже, я что -то не так делаю .
Вот HELP:

The syntax for CONVERT is as follows:

CONVERT(char, dest_char_set[, source_char_set])

source_char_set is the source character set and dest_char_set is the destination character set. If the source_char_set parameter is not specified, then it defaults to the database character set.



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

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

или

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

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

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

Нужно какие-то дополнительные системные скрипты запускать, чтобы поставить пакет с Convert - ом ?
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099596
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык это ж функция:)
Код: plaintext
1.
update my_table set my_column = CONVERT(my_column, 'CL8MSWIN1251', 'CL8ISO8859P5');

Только проверь на кошках сперва, вдруг не получится, так совсем непонятно станет, из какой кодировки в какую надо конвертить.
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099612
il79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По одному из линков , которые мне дал Denis (спасибо ему !) ,
есть следующий способ решения проблемы :

SET NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
REM выгрузка данных из БД в текстовый файл
SQLPLUS ... @MY_UNLOADER.SQL

SET NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
REM загрузка текстового файла в БД
SQLLDR ... MY_LOADER.CTL

Только я совершенно не знаю , как средствами SQLPLUS можно выгружать данные.

Подскажите, пожалуйста!
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099614
il79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Denis, спасибо!!!
Сейчас попробую
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099659
IL79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здорово!
Попробовал - конвертит.
Только все равно кракозяблики вместо текста.
Я думаю, потому, что изначально ставил Oracle с кодировкой ..P5.
Сейчас преставлю Oracle с WIN1251 и попробую снова
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099796
il79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно - все сделал, все равно не пашет в win1251 . Отображает черт знает что.

По шагам :

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

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

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

Подскажите, пожалуйста, как можно выгрузить данные в текстовый файл SQLPLUS-ом?
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099821
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так:
1.поставить cl8mswin1251
2.сделать импорт.

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

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

А если плюсом занные выгружать, то скажи просто:
Код: plaintext
1.
2.
3.
4.
set long  32767  pagesize  0  linesize  800  feedback off echo off verify off trims on
spool exp.txt
select * from scott.emp;
spool off
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32099864
il79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
УРАААА!!!
ЗАРАБОТАЛО!!!!!!!!!!!!

Итак:
1.поставить Oracle c CL8ISO8859P5.
2.Поставить NLS=CL8ISO8859P5
3.импортировать данные
4.Поставить NLS=CL8MSWIN1251
5.update mcol set my_column= CONVERT(my_column, 'CL8ISO8859P5','CL8MSWIN1251');

Все конвертится и все пашет!!!
_________________________________________

Единственная проблема: так ведь придется каждый столбец конвертить =(
А как можно отконвертить всю таблицу сразу?
(К меня база примерно в 2.5 Гб , примерно 120 таблиц , и в каждой где-то по 20-50 строк)

То есть это придется писать на PL/SQL, или можно обойтись средствами SQL?
Как это проще сделать?
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32100125
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO, ты шёл правильным путём, но по дороге сбился.

1.Поставил Oracle9i с WIN1251
В смысле, создал базу с правильным charset CL8MSWIN1251.

2.Заменил в реестре NLS_LANG на CL8ISO8859P5
3.Перезапустился

4.Импортировал базу (нормально видны русские символы)

--5.Сконвертил столбец в WIN1251 (нормальные символы стали зябликами)
Вот это ты сделал зря. В базе у тебя уже WIN1251

6.Переставил в реестре NLS_LANG в WIN1251
7.Перезапустился

Т.е. повтори шаги 1, 2, 3, 4, 6 и 7, и всё у тебя получится...
...
Рейтинг: 0 / 0
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
    #32100238
il79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vskv,спасибо!
Я так понял, что работает и так, как я написал, и так , как ты.
У меня уже все получилось.

Вопрос снят.

СПАСИБО ВСЕМ ЗА ПОДДЕРЖКУ !!!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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