我正在尝试将数据从Oracle源加载到SQL Server数据库中。正在加载的列之一是串联的结果。有很多值,长度为6000或7000个字符。目标表已设置为nvarchar(max)
,因此我们不会遇到任何截断问题。
但是,当SSIS包运行时,仍然无法说结果字符串太长。我已经进入SSIS的高级编辑器并明确地将其更改为DT_NTEXT unicode textstream
。它仍然失败。
请帮忙。
如果没有其他方法,我只会将值截断为4000个字符。
答案 0 :(得分:2)
我过去遇到过同样的问题。不幸的是,由于驱动程序或SSIS的内部实现限制,它无法解决。基本上,Oracle端限制为8000个字符,它对应于4000个Unicode字符。转换为unicode发生在Oracle的某个地方 - > SQL Server路径无法避免。即使声明是双方的简单varchar。
答案 1 :(得分:1)
如果@Milan.Švec是正确的,那么你只需要在框外思考。
1)从Oracle推送数据到csv文件。
2)确保定义分隔符,以便考虑双引号。
3)从您的SSIS包中,如果需要,从所述csv文件读取到临时表。
4)运行Transformation操作以保证您的数据和Load进入最终表。
当然,还有其他一些方法可以做到这一点,但csv是通用的,至少是直截了当的。避免使用EXCEL文件,因为它们在某些版本中往往非常错误。
答案 2 :(得分:0)
我想我找到了答案。 它是oracle中的CLOB函数。如果我没有定义任何XMLElements,我可以通过SSIS绕过4000字符限制。