Получить LONGTEXT от MariaDB для Oracle через DB Link - PullRequest
0 голосов
/ 01 ноября 2019

Моя цель - скопировать таблицу, содержащую LONGTEXT из MariaDB (10.1.26 64bit) в Oracle (12.1.0.1.0 64bit)

Это мой initCCS.ora файл:

HS_FDS_CONNECT_INFO=CCS
HS_FDS_TRACE_LEVEL=INFO
HS_FDS_SHAREABLE_NAME=/path/to/libodbc/libodbc.so
HS_KEEP_REMOTE_COLUMN_SIZE=LOCAL
HS_NLS_NCHAR=UCS2
HS_LANGUAGE=AMERICAN_AMERICA.UTF8
set ODBCINI=/path/to/odbc/ini/odbc.ini

Это часть odbc.ini для CCS:

[CCS]
Driver = /path/to/lib/libmaodbc.so
server = mariadb.server.loc
database = db_name
CHARSET = UTF8

Это таблица, которую я пытаюсь скопировать (я упростила ее, чтобы она содержала только 2 столбца):

+--------------+--------------+-------------+
|    Column    | Mariadb type | Oracle type |
+--------------+--------------+-------------+
| ID           | INTEGER      | INTEGER     |
| LONG_CONTENT | LONGTEXT     | CLOB        |
+--------------+--------------+-------------+

LONG_CONTENT столбец содержит огромные строки (более 32 тыс. Символов).

Когда я пытаюсь скопировать таблицу без столбца LONGTEXT, он работает нормально:

insert into local_table (id)
select id from remote_table@ccs

И когда я пытаюсь скопировать LONGTEXT столбец - я получаю ORA-00997:

insert into local_table (id, long_content) 
select id, long_content from remote_table@ccs

ORA-00997: незаконное использование типа данных LONG

попытался скопировать эту таблицу, используя CTAS:

create table local_temp_table as
select *
from remote_table@ccs

ORA-00997: недопустимое использование типа данных LONG

Использование обновления для уже скопированных строк:

update local_table lt
set lt.long_content = (
    select rt.long_content
    from remote_table@ccs rt
    where rt.id = lt.id
)

ORA-00997: незаконное использование типа данных LONG

Использование динамического sql:

execute immediate 'insert into local_table (long_content) select long_content from remote_table@ccs where id = 1';

ORA-00997: незаконное использование типа данных LONG

При попытке скопироватьв состоянии с LONGBLOB столбца.

На данный момент я не уверен, что вызывает проблему - моя установка или мой подход к копированию таблицы в PL / SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...