0

我是一名程序员,我正在编写一些 SQL 代码来从远程 Oracle 数据库中提取数据并将其插入到我们本地 MS SQL Server 上的一些表中。

我需要将 Oracle NCLOB 列带到我们的 MS SQL Server 数据库中的 NVARCHAR 列。

我们没有 DBA 员工为我做这件事。

就我的目的而言,拥有整个 NCLOB 值并不重要,因此 4000 个字符只是我选择的一个任意大的数字。

我的目标是在 Oracle 端的 NVARCHAR2 字段中拥有尽可能多的数据,并且仍然保持在日常数据刷新中通过网络带来的实用性。

我已经看到很多关于获取所有数据以及获取超过 4000 个字符的数据等解决方案的参考。但是,我正在寻找一个简单的版本,我可以轻松地放入和维护而无需繁重的 DBA 级别的工作。

4

1 回答 1

2

查看http://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:367980988799

您将要使用 dbms_lob.substr

根据上面引用的帖子:

dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte );

例如:

select dbms_lob.substr( x, 4000, 1 ) from T;

将为我提供 clob 的前 4000 个字符。请注意,当我像我一样使用 SQL 时,最大长度为 4000。您可以使用 plsql 获得 32k:

declare my_var long; begin for x in ( select X from t )
loop my_var := dbms_lob.substr( x.X, 32000, 1 ); ....

于 2014-02-12T21:54:48.400 回答