|
|
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
есть источник с настройками ниже: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. приёмник с настройками: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Вопрос заключается в том: как затянуть текст на кириллице из источника в приёмник, не создавая при этом на источнике объекты БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 11:58 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
Данный способ работает, но есть условие задачи "не создавая при этом на источнике объекты БД." John.D AnimalЕсть одна база на UNIX-е Oracle 8.1.7.4 NLS WE8DEC (не наша), вторая на Windows2003 Oracle 9.2.0.5 NLS CL8MSWIN1251 (наша). К чему относиться "Наша"-"Не наша" ? Если к кодировкам - то лучше всего поменять её на юниковской базе. Если "не наша" база - то обычный метод таков: В базе с кривой кодировкой создаётся вьюшка, в которой все текстовые поля конвертируются в RAW select ... UTL_RAW.cast_to_raw(text_column) raw_column ... from... В другой базе создаётся ДБ Линк и вьюшка select ...UTL_RAW.cast_to_varchar2(raw_column) text_column ... from ...@DBLink_name; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 12:03 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
saxarock, текст на приемнике ??????, или крякозябки? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 12:20 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
Stax, Текст на приемнике - кириллица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 12:23 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
saxarockStax, Текст на приемнике - кириллица. в чем проблема, если "на приемнике - кириллица"? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 12:35 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
saxarockесть условие задачи "не создавая при этом на источнике объекты БД." SET NLS_LANG=.WE8DEC Тут экспорт в плоские текстовые файлы SET NLS_LANG=.CL8MSWIN1251 Тут импорт этих файлов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 12:38 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
Задача однократная? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 13:19 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovsaxarockесть условие задачи "не создавая при этом на источнике объекты БД." SET NLS_LANG=.WE8DEC Тут экспорт в плоские текстовые файлы SET NLS_LANG=.CL8MSWIN1251 Тут импорт этих файлов. не так делается exp/imp из базы с кривой кодировкой 1) Однозначного отображения WE8 -> CL8 не существует, поэтому при любой штатной перекодировке char/varchar2 - получите '????' вместо текста 2) Штатная перекодировка отключается когда characterset базы == characterset клиента Поэтому, при одинаковых characterset - кодировка русского текста в we8 базе может быть любая любая русская однобайтовая. Поскольку у Вас срабатывает cast_to_raw, то скорее всего у Вас в WE8 базе хранится CL8MSWIN1251 но нужно точно определить какая именно кодировка хранится в базе 3) Второй-третий байт original import файла - код кодировки то есть последовательность exp/imp такая: Код: plsql 1. 2. 3. 4. именно поэтому для преобразования на лету использовался cast_to_raw (отключение штатной перекодировки) Если у Вас работает указанный способ: авторВ базе с кривой кодировкой создаётся вьюшка, в которой все текстовые поля конвертируются в RAW Код: plsql 1. В другой базе создаётся ДБ Линк и вьюшка Код: plsql 1. то Попробуйте загрузку через Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 13:22 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
Vadim Lejninне так делается exp/imp из базы с кривой кодировкой По-моему это проще ковыряния двоичным редактором. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 13:30 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
Vadim Lejnin1) Однозначного отображения WE8 -> CL8 не существует, поэтому при любой штатной перекодировке char/varchar2 - получите '????' вместо текстаПри совпадении кодировки клиента и сервера перекодировка не осуществляется и замены на знаки вопроса не произойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 13:49 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
-2-Vadim Lejnin1) Однозначного отображения WE8 -> CL8 не существует, поэтому при любой штатной перекодировке char/varchar2 - получите '????' вместо текстаПри совпадении кодировки клиента и сервера перекодировка не осуществляется и замены на знаки вопроса не произойдет. Vadim Lejnin2) Штатная перекодировка отключается когда characterset базы == characterset клиента Dimitry SibiryakovVadim Lejninне так делается exp/imp из базы с кривой кодировкой По-моему это проще ковыряния двоичным редактором. Суть в том, что при exp в файле будет прописана кодировка текущего сеанса Чтобы избежать перекодировки Вам нужно будет установить WE8, которая и пропишется в dmp И если не править файл, при imp Вы получите перекодировку WE8 -> CL8 со всеми вытекающими Если не верите, попробуйте сделать exp/imp между базами WE8 и CL8:) p.s. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 14:42 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
Vadim LejninПопробуйте загрузку через Код: plsql 1. 2. 3. 4. разве в UTL_RAW.cast_to_raw(text_column) текст уже не будет испорчен? імхо ітересно попробовать вместо/с materialize хинт DRIVING_SITE ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 15:01 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
Вадим, начиная с 9.2 все немного сложнее В файле экспорта данные (пользовательские) сохраняются в кодировке исходной БД, независимо от NLS_LANG (именно то, что прописано во 2-3 байтах) и, соответственно, сохраняется сама кодировка исходной БД (данные словаря перекодируются в соответствии с NLS_LANG сессии экспорта) Character Set Conversion при импорте Если задача постоянная -- то можно попробовать создать dblink, когда серверный процесс для нашей сессии будет стартовать со своими переменными окружения, в частности NLS_LANG=.WE8DEC, т.е. например через отдельный листенер (если мы имеем дело с юниксами) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 15:07 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
До кучи - можно решить посредством sql*plus copy command. nls_lang выставить в .WE8DEC Запрос к источнику - с конверсией в raw. На приемнике - обратная конверсия любым удобным способом. Варианты с dblink - не следует забывать, что cast_to_raw тоже надо звать "на той стороне" (cобаку "@" забыли в примере), а я бы еще и приколотил гвоздем /*+ driving_site() */ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 15:19 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровВадим, начиная с 9.2 все немного сложнее В файле экспорта данные (пользовательские) сохраняются в кодировке исходной БД, независимо от NLS_LANG (именно то, что прописано во 2-3 байтах) и, соответственно, сохраняется сама кодировка исходной БД (данные словаря перекодируются в соответствии с NLS_LANG сессии экспорта) Character Set Conversion при импорте Если задача постоянная -- то можно попробовать создать dblink, когда серверный процесс для нашей сессии будет стартовать со своими переменными окружения, в частности NLS_LANG=.WE8DEC, т.е. например через отдельный листенер (если мы имеем дело с юниксами) Вячеслав, странно, опыт показывает что это не совсем так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 16:20 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
[quot Vadim Lejnin]Вячеслав ЛюбомудровNLS_LANG (именно то, что прописано во 2-3 байтах)Я, как всегда, коряво выражаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 16:34 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
Vadim Lejnin, Код: plsql 1. 2. 3. 4. - указанный способ не сработал( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 09:46 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
по сути таблица перекодировок we8dec <-> cl8iso8859p5 отсутствует. Способ рабочий В базе с кривой кодировкой создаётся вьюшка, в которой все текстовые поля конвертируются в RAW Код: plsql 1. В другой базе создаётся ДБ Линк и вьюшка Код: plsql 1. но не решает проблему т.к. на источнике создавать объекты нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 09:50 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
saxarockуказанный способ не сработал(Про то, что функция локальная, обратил внимание stax. Соответственно, пробуй указать дблинк в вызове функции и добавить хинт driving_site. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 10:46 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
-2-, пробовал, конвертация все равно прошло криво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2018, 08:17 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
А если utl_raw.cast_to_raw@dblink использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2018, 09:45 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
MazoHist, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. с хинтами тоже пробовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2018, 10:16 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
MazoHist, результат все равно кривой например такой Л?N?Y ?icOaU?O ?Oa?UU?OOc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2018, 10:17 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
saxarock Код: plsql 1. Код: plsql 1. а почему кодировки разные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2018, 13:44 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
MazoHist, Кодировки верные. работает следующий способ создаем таблицу Код: plsql 1. 2. 3. 4. 5. потом селектом достаю нужные из нее данные Код: plsql 1. 2. Конвертация корректная получаю нормальную кирилицу, но способ опять же кривой( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2018, 15:18 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39640007&tid=1883300]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 491ms |

| 0 / 0 |
