如何只从Oracle NCLOB复制前4000个字符到NVARCHAR2(4000)值?

时间:2014-02-12 20:51:20

标签: sql sql-server oracle plsql nclob

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

我需要将Oracle NCLOB列引入MS SQL Server数据库中的NVARCHAR列。

我们没有DBA工作人员为我这样做。

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

我的目标是尽可能地在Oracle端的NVARCHAR2字段中获取尽可能多的数据,并且仍然保持实际,以便在每日数据刷新中引入网络。

我见过许多解决方案的参考资料,以获取所有数据,并获取数据超过4000个字符等。但是,我正在寻找一个简单的版本我可以轻松地投入和维护而无需繁重的DBA级工作。

1 个答案:

答案 0 :(得分: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 ); ....