从MSSQL查询远程Oracle CLOB数据

时间:2019-03-04 14:57:13

标签: sql sql-server oracle varchar clob

我阅读了有关此问题的不同文章,但对我的问题没有帮助。 我在本地数据库(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 :(得分:0)

没有MSSQL,但就我而言,我们是使用Oracle的ODBC Connect引擎将数据提取到MariaDB中的。

对于CLOB,我们进行了以下操作(概述):

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

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

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

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

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

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

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

  1. 在MariaDB中创建视图以查询视图。

  2. 在MariaDB中创建表/视图,该表/视图将这些块连接到单个Text列中。

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

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