|
|
|
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 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
в конструкции Код: plsql 1. такое почему-то не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2018, 15:19 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
saxarockнапример такой Л?N?Y ?icOaU?O ?Oa?UU?OOc Судя по "метод работает" 21386945 кириллица в источнике должна лежать в 1251. Тогда зачем перекодировка? Однако судя по предположительно перекодированной iso8859-5 -> mswin1251 строке "Л?N?Y ?icOaU?O ?Oa?UU?OOc" это может быть не совсем так. Лучше всего, если сможете представить читаемую выборку с кириллицей из источника вида Код: plsql 1. не через dblink, а непосредственно sqlplus. Это позволило бы понять, в какой кодировке кириллица лежит на источнике и не гадать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2018, 15:28 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, реузльтат Код: plsql 1. Код: plsql 1. Не совсем понимаю к чему ведете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 07:11 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
saxarockНе совсем понимаю к чему ведете? Просто убедился, что за dblink действительно iso8859-5 - не люблю угадайки, особенно когда "на той стороне" все делают по-своему :) План запроса для такого варианта как будет выглядеть? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 15:50 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. --------------------------------------------------------------------------------- Способ действительно сработал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 07:59 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous Код: plsql 1. И что, неужто работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:19 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
Elicandrey_anonymous Код: plsql 1. И что, неужто работает?utl_rawThe NLS_LANG parameter form language_territory.character set is also accepted for to_charset and from_charset. However, this form is deprecated and should be avoided. Note that language and territory are ignored by this subprogram. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:39 |
|
||
|
NLS_CHARACTERSET WE8DEC и CL8MSWIN1251
|
|||
|---|---|---|---|
|
#18+
-2-utl_rawThe NLS_LANG parameter form language_territory.character set is also accepted for to_charset and from_charset. However, this form is deprecated and should be avoided. Note that language and territory are ignored by this subprogram."Задокументировано" только в 12.1 и сразу как deprecatted. В любом случае, код с душком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 09:00 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1883300]: |
0ms |
get settings: |
6ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
146ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 484ms |

| 0 / 0 |
