Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Администрирование Oracle Database:
- Установка и настройка базы данных
- Обновление, применение патчей
- Оптимизация, настройка производительности
- Обучение, подготовка персонала, оптимизация
  • Страница:
  • 1
  • 2

ТЕМА: oracle функция convert

Re: oracle функция convert 31 янв 2012 14:04 #4316

  • George
  • George аватар Автор темы
  • Посетитель
  • Посетитель
По одному из линков , которые мне дал Denis (спасибо ему !) ,
есть следующий способ решения проблемы :

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

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

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

Подскажите, пожалуйста!

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

Re: oracle функция convert 31 янв 2012 14:05 #4317

  • Carlos
  • Carlos аватар
  • Посетитель
  • Посетитель
А если так:
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

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

Re: oracle функция convert 31 янв 2012 14:06 #4318

  • George
  • George аватар Автор темы
  • Посетитель
  • Посетитель
УРАААА!!!
ЗАРАБОТАЛО!!!!!!!!!!!!

Итак:
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?
Как это проще сделать?

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

Re: oracle функция convert 31 янв 2012 14:06 #4319

  • Grushua
  • Grushua аватар
  • Посетитель
  • Посетитель
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, и всё у тебя получится...

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

Re: oracle функция convert 31 янв 2012 14:12 #4320

  • George
  • George аватар Автор темы
  • Посетитель
  • Посетитель
Я так понял, что работает и так, как я написал, и так , как ты.
У меня уже все получилось.

Вопрос снят.

СПАСИБО ВСЕМ ЗА ПОДДЕРЖКУ !!!

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

Re: oracle функция convert 31 янв 2012 14:40 #4332

  • Torpeda
  • Torpeda аватар
  • Посетитель
  • Посетитель
Подскажите пожалуйста.

БД Oracle 10.2.0.3, Windows XP

Есть две базы данных с кодировками:
NLS_CHARACTERSET CL8MSWIN1251
NLS_CHARACTERSET WE8ISO8859P1

Была поставлена задача изменить кодировки на :
NLS_CHARACTERSET WE8ISO8859P1

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

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