|
|
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
Возникла следующая проблема. Есть дамп БД, был сделан на Sun, кодировка - AMERICAN_AMERICA.CL8ISO8859P5 . Надо - корректно импортировать БД в Oracle 9i, чтобы работали функции Upper(char), lower(char) от русских слов. Если ставить NLS_LANG=AMERICAN_AMERICA.CL8ISO8859P5 , то все замечательно, НО эти функции - не пашут, а как раз это - критично. Если ставить NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251 - кодировку по умолчанию, то функции пашут, но база читается в абракадабре. Насколько я понимаю, с этой проблемой много кто сталкивается, но никакого вразумительного решения я не нашел. Подскажите, что тут можно сделать. Буду очень признателен за любые мысли по этому поводу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2003, 15:08 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
надо ставить кодировку русскую, но при импорте надо использовать функцию convert и преобразовывать кодировку из AMERICAN_AMERICA.CL8ISO8859P5 в RUSSIAN_CIS.CL8MSWIN1251 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2003, 17:16 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
>надо ставить кодировку русскую, но при импорте надо использовать функцию convert и преобразовывать кодировку из AMERICAN_AMERICA.CL8ISO8859P5 в RUSSIAN_CIS.CL8MSWIN1251 Ste@lth, спасибо за совет. Ты имеешь ввиду , что надо поставить при импорте БД значение параметра утилиты imp - CHARSET=CL8ISO8859P5 ? Причем NLS должен стоять ...WIN1251 так ? Или в каком смысле - использовать функцию convert ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 19:07 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
Есть такая функция 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 10:45 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
Дело в том, что при инсталляции 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, может - будет преобразовываться. Попробую так. Есть у кого - нибудь мысли на этот счет? Может быть это можно сделать проще ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 11:07 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
Denis, спасибо за совет! Сейчас попробую!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 11:09 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
Похоже, я что -то не так делаю . Вот 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 - ом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 14:14 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
Дык это ж функция:) Код: plaintext 1. Только проверь на кошках сперва, вдруг не получится, так совсем непонятно станет, из какой кодировки в какую надо конвертить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 14:29 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
По одному из линков , которые мне дал Denis (спасибо ему !) , есть следующий способ решения проблемы : SET NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 REM выгрузка данных из БД в текстовый файл SQLPLUS ... @MY_UNLOADER.SQL SET NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 REM загрузка текстового файла в БД SQLLDR ... MY_LOADER.CTL Только я совершенно не знаю , как средствами SQLPLUS можно выгружать данные. Подскажите, пожалуйста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 14:34 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
Denis, спасибо!!! Сейчас попробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 14:35 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
Здорово! Попробовал - конвертит. Только все равно кракозяблики вместо текста. Я думаю, потому, что изначально ставил Oracle с кодировкой ..P5. Сейчас преставлю Oracle с WIN1251 и попробую снова ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 15:04 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
Странно - все сделал, все равно не пашет в win1251 . Отображает черт знает что. По шагам : 1.Поставил Oracle9i с WIN1251 2.Заменил в реестре NLS_LANG на CL8ISO8859P5 3.Перезапустился 4.Импортировал базу (нормально видны русские символы) 5.Сконвертил столбец в WIN1251(нормальные символы стали зябликами) 6.Переставил в реестре NLS_LANG в WIN1251 7.Перезапустился И нифига! Все равно кракозяблики. Наверное, придется сначало выгружать данные SQLPLUS-ом, а потом-грузить SQL-Loader-ом Подскажите, пожалуйста, как можно выгрузить данные в текстовый файл SQLPLUS-ом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 17:20 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
А если так: 1.поставить cl8mswin1251 2.сделать импорт. В CL8ISO8859P5 ИМХО не надо лить данные. Либо же. 1.поставить CL8ISO8859P5 2.сделать импорт. 3.поставить cl8mswin1251 4.открыть сессию 5.скзать convert(string, 'CL8ISO8859P5', 'cl8mswin1251') ; Хотя, честно говоря, это все мои домыслы. Какой-то набор правильных действий наверняка существует, надо только угадать его:) А старая база, из которой был дамп сделан, еще живая? К ней можно из новой по линку обратиться? А если плюсом занные выгружать, то скажи просто: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 17:48 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
УРАААА!!! ЗАРАБОТАЛО!!!!!!!!!!!! Итак: 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? Как это проще сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 18:51 |
|
||
|
Корректная кодировка при импорте БД с CL8ISO8859P5 в Oracle9i
|
|||
|---|---|---|---|
|
#18+
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, и всё у тебя получится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2003, 01:48 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32099864&tid=1991957]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
148ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 423ms |

| 0 / 0 |
