SSIS - 如何转换Oracle的实际值?

时间:2014-04-23 12:01:27

标签: sql-server oracle ssis attunity

我在程序包中面临一个问题,即将一些数据从MySQL表导入Oracle表和MS SQL Server表。它从MySQL到SQL Server运行良好,但是当我想导入Oracle时出现错误。

我要导入的表包含数据类型为DT_R8的属性(unitPrice)。

enter image description here

Oracle的目标数据类型是DT_NUMBERIC,您可以在捕获中看到。

enter image description here

我添加了一个转换步骤,将unitPrice数据从DT_R8转换为DT_NUMERIC。

enter image description here

它不起作用,我收到以下错误。

enter image description here

我找到了错误的详细信息:

  

尝试将字符串转换为数字时,会发生ORA-01722(“无效数字”)错误,并且无法将字符串转换为有效数字。有效数字包含数字'0'到'9',可能有一个小数点,字符串开头或结尾的符号(+或 - ),或'E'或'e'(如果它是浮点数)科学记数法中的点数)。禁止所有其他角色。

但是,我不知道如何解决。

编辑:我添加了一个组件,将行/错误重定向到Excel文件。

enter image description here

以下屏幕截图显示了该过程的结果,包括错误:

enter image description here

通过浏览记录的仅有3000行,似乎该进程只接受int值而不是真实的。因此,如果价格等于10,那就没关系,但如果它是10,5就失败了。

有什么想法解决这个问题?

1 个答案:

答案 0 :(得分:2)

您的NLS环境与预期的环境不匹配。默认情况下,Oracle假定","是分组角色和"。"是小数点分隔符。确保您的会话使用NLS_NUMERIC_CHARACTERS参数的正确值。

请参阅Setting Up a Globalization Support Environment了解文档。