Запрос данных удаленного оракула CLOB из MSSQL - PullRequest
0 голосов
/ 04 марта 2019

Я читал разные посты об этой проблеме, но она не помогла мне с моей проблемой.Я нахожусь на локальной базе данных (Microsoft SQL Server) и запрашиваю данные на удаленной базе данных (ORACLE).В этих данных есть тип CLOB.

Столбец типа CLOB показывает мне только 7 правильных данных, остальные показывают мне <null>

Я пытался CAST(DEQ_COMMENTAIRE_REFUS_IMPORT AS VARCHAR(4000))

Я пытался SUBSTRING(DEQ_COMMENTAIRE_REFUS_IMPORT, 4000, 1)

Можете ли вы помочь мне, пожалуйста?

Спасибо

1 Ответ

0 голосов
/ 04 марта 2019

Нет MSSQL, но в моем случае мы загружали данные в MariaDB с помощью механизма ODBC Connect из Oracle.

Для объектов CLOB мы сделали следующее (в общих чертах):

  1. Создать PLSQL-функцию get_clob_chunk (clobin CLOB, chunkno NUMBER) RETURN VARCHAR2.

Это вернет указанный n-ный фрагмент в 1000 символов для CLOB.

Мы нашли, что 1000 лучше всего работает смногобайтовые данные.Если все данные представляют собой однобайтовый простой текст, то фрагменты в 4 000 безопасны.

Извиняюсь за отсутствие реального кода, так как я немного тороплюсь.

Создайте Oracle VIEW, который вызывает функцию get_clob_chunk, чтобы разделить CLOB на 1000 столбцов чанков chunk1, chunk2, ... chunkn, CAST как VARCHAR2 (1000).

Мы обнаружили, что OracleМне не нравилось иметь более 16 таких столбцов, поэтому нам пришлось разделить представления на наборы из 16 таких столбцов.

Это означает, что вы должны проверить, какой максимальный размер данных в CLOB равензнать, сколько кусков / просмотров вам нужно.Само собой разумеется, что делать это динамически добавляет сложности.

Создайте представление в MariaDB, запрашивая представление.

Создайте таблицу / представление в MariaDB, которое объединит фрагменты в один столбец Text.

Обратите внимание, что в нашем случае мы обнаружили, что копирование столбцов типа Text между базами данных MariaDB с использованием механизма ODBC Connect также проблематично и требует аналогичного метода разделения.

Честно говоря, я бы предпочелиспользуйте для этого Java / C #.

...