从 MSSQL 查询远程 oracle CLOB 数据

Query remote oracle CLOB data from MSSQL

我阅读了有关此问题的不同帖子,但没有帮助我解决问题。 我在本地数据库(Microsoft SQL 服务器)上查询远程数据库 (ORACLE) 上的数据。 在这个数据中,有一个CLOB类型。

CLOB 类型的列只显示了 7 个正确的数据,其他人显示的数据 <null>

我试过CAST(DEQ_COMMENTAIRE_REFUS_IMPORT AS VARCHAR(4000))

我试过SUBSTRING(DEQ_COMMENTAIRE_REFUS_IMPORT, 4000, 1)

你能帮帮我吗?

谢谢

没有 MSSQL,但在我的例子中,我们使用 Oracle 的 ODBC Connect 引擎将数据提取到 MariaDB。

对于 CLOB,我们做了以下(大纲):

  1. 创建 PLSQL 函数 get_clob_chunk (clobin CLOB, chunkno NUMBER) RETURN VARCHAR2.

这将为 CLOB return 指定的第 n 个 1000 个字符块。

我们发现 1,000 最适合处理多字节数据。如果数据都是纯文本单字节,则 4,000 个块是安全的。

抱歉没有实际代码,因为我时间有点赶。

  1. 创建一个 Oracle VIEW,调用 get_clob_chunk 函数将 CLOB 拆分为 1,000 个字符块列 chunk1、chunk2、... chunkn,CAST 为 VARCHAR2(1000)。

我们发现 Oracle 不喜欢超过 16 个这样的列,因此我们不得不将视图拆分为 16 个这样的列的集合。

这意味着您必须检查 CLOB 中数据的最大大小,以便您知道需要多少 chunks/views。不用说,动态地这样做会增加复杂性。

  1. 在查询视图的 MariaDB 中创建一个视图。

  2. 在 MariaDB 中创建 table/view,将块连接成单个文本列。

请注意,在我们的案例中,我们发现使用 ODBC Connect 引擎在 MariaDB 数据库之间复制文本类型的列也是有问题的,并且需要类似的拆分方法。

坦率地说,我宁愿为此使用 Java/C#。