从Oracle提取数据的SSI
我有一个SSIS包,它正在使用本机OLD DB\oracle provider for OLD DB从oracle数据库中提取数据。 我的包成功但缓慢地将数据从Oracle中的一个视图拉到SQL数据库中的一个临时表中。我遇到的问题是,Oracle中的某些字段的长度为4000个字符,而SQL Server中我只需要前255个字符。在我的oracle查询中使用一个子字符串,只使用我需要的大小,还是全部使用4000个字符更好?是否有更好的方法来处理此数据导入 以下是我用于从Oracle提取数据的查询示例:从Oracle提取数据的SSI,oracle,ssis,Oracle,Ssis,我有一个SSIS包,它正在使用本机OLD DB\oracle provider for OLD DB从oracle数据库中提取数据。 我的包成功但缓慢地将数据从Oracle中的一个视图拉到SQL数据库中的一个临时表中。我遇到的问题是,Oracle中的某些字段的长度为4000个字符,而SQL Server中我只需要前255个字符。在我的oracle查询中使用一个子字符串,只使用我需要的大小,还是全部使用4000个字符更好?是否有更好的方法来处理此数据导入 以下是我用于从Oracle提取数据的查询示
select a
, b
, c
, substring (c,1,255) as c, substring (d,1,255) as d
, e
, CASE WHEN EXTRACT(YEAR from LAST_TAKEN_DT) < 1900
THEN NULL
WHEN EXTRACT(YEAR from LAST_TAKEN_DT) > 2025
THEN NULL
END AS LAST_TAKEN_DT
选择一个
B
C
,子串(c,1255)为c,子串(d,1255)为d
E
,提取时的情况(从上次提取日期算起的年份)<1900
然后无效
提取时间(自上次提取的年份)>2025年
然后无效
作为最后一次拍摄结束
从oracle_视图1开始,如果由您决定,我建议通过OLEDB连接使用Attunity oracle适配器。这肯定要快得多,您可以选择在Oracle查询中或在SSIS包中使用派生列执行子字符串。case语句是因为Oracle中的最后一个字段是测试字段,进入SQL Server时是日期时间字段。是的,通常最好尽早减少数据集。这包括宽度和行数。Attunity为+1。我总是根据输出要求对每一列进行细分或转换-这也使您免受可能破坏SSI的看似微不足道的数据类型更改的影响,例如Oracle列从VARCHAR2(30)增加到VARCHAR2(60)。