Oracle 12c 数字字段映射到 SSIS 中的 DT_WSTR

Oracle 12c Number field mapped to DT_WSTR in SSIS

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

Oracle 数据库中的

Table

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

没有为 Col2 数字字段指定精度/小数位数。所以它存储给定的值。

示例值

SSIS 包:

在 OLEDB 源组件的 SSIS 包中,我们映射了 table,Col2 映射为 DT_WSTR。如果我要更改为 DT_Numeric,我不确定要在精度和比例中指定什么。由于Oracle table.

中没有提到精度/比例

编辑:

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

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

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

在Oracle中,当没有显式包含precision/scale时,NUMBER类型默认为float:

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

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