微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle 12c Number 字段映射到 SSIS

如何解决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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。