Oracle 12c Number 字段映射到 SSIS

问题描述

我正在尝试使用 Microsoft SSIS 2008 将 Oracle 12c 数据库表中的数据提取到平面文件

Oracle 数据库中的表

Create Table Test
(
  Col1 Varchar2(10),Col2 NUMBER default 0
)

没有为 Col2 Number 字段指定精度/比例。所以它存储给定的值。

样本值

enter image description here

SSIS 包:

在OLEDB源组件中的SSIS包中,我们映射了表,Col2是用DT_WSTR映射的。如果我要更改为 DT_Numeric,我不确定在精度和比例中指定什么。由于Oracle表中没有提到精度/比例。

编辑:

我在“执行阶段”本身的 OLE DB 源本身中收到错误, [OLE DB 源 1] 错误输出“OLE DB 源输出”(11) 上的输出列“COL2”(20) 出错。 返回的列状态为:“文本被截断或目标代码页中的一个或多个字符不匹配。”。

enter image description here

如果我像下面那样修改 OLE DB 源的输出列中的数据类型,它就可以工作,我没有在外部列和 OLE DB 错误输出列中进行修改在这两个地方都是 DT_WSTR。这样可以吗?

而且我还没有触及平面文件目标中的任何内容,因为我在 OLE DB 源中遇到异常。

enter image description here

解决方法

在 Oracle 中,当未明确包含精度/小数位数时,NUMBER 类型默认为浮点数:

https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT313

因此将 DT_WSTR 更改为 DT_R8(双精度浮点数)应该是最安全的假设,您可以在高级编辑器中执行此操作:

enter image description here