我是程序员,我正在编写一些SQL代码来从远程Oracle数据库中提取数据并将其插入到本地MS SQL Server上的某些表中。
我需要将Oracle NCLOB列引入MS SQL Server数据库中的NVARCHAR列。
我们没有DBA工作人员为我这样做。
就我的目的而言,拥有整个NCLOB值并不重要,所以4000个字符只是我选择的任意大数字。
我的目标是尽可能地在Oracle端的NVARCHAR2字段中获取尽可能多的数据,并且仍然保持实际,以便在每日数据刷新中引入网络。
我见过许多解决方案的参考资料,以获取所有数据,并获取数据超过4000个字符等。但是,我正在寻找一个简单的版本我可以轻松地投入和维护而无需繁重的DBA级工作。
答案 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 ); ....