|
|
|
long 2 varchar из dblink
|
|||
|---|---|---|---|
|
#18+
Сколько не рыл нормального решения не нашел. Суть - грузим в аналитическую базу (oracle 11g) данные из mysql (через dblink и ODBC). В таблицах MySQL встречается тип LONG. Меня устраивает обрезанный вариант этих полей, но как известно нормально в селектах работать с лонгами из дблинка невозможно и приходится брать их через цикл. А это чертовски долго. Сейчас у меня вариант типа этого, но хотелось бы разогнать. declare a varchar; begin for b in (select "id","text" from "table"@dblink ) loop a := substr(b.text,1,4000); a := convert(a, 'CL8MSWIN1251', 'AL32UTF8'); update tablename set text=a where id=b.id; ebd loop; end; Делать alter table в исходной базе не вариант, как и корячить свои вьюхи/процедуры. В мечтах вставлять напрямую типа insert into tablename (id, field1, field2, field_long_type) select "id", "field1", "field2", "field_long_type" from "table"@dblink Но как я понимаю это не возможно. Кстати, а в 12c лучше не стало? Подскажите, куда копать? P.S. Читаю, что можно использовать to_lob() при инсерте, но у меня не выходит. Если в оракловой таблице я делаю тип clob, то он говорит, что ожидался blob и наоборот. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2017, 14:08 |
|
||
|
|

start [/forum/topic.php?fid=52&gotonew=1&tid=1885095]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
149ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 445ms |

| 0 / 0 |
