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(双精度浮点数)应该是最安全的假设,您可以在高级编辑器中执行此操作:
我正在尝试使用 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(双精度浮点数)应该是最安全的假设,您可以在高级编辑器中执行此操作: