我在程序包中面临一个问题,即将一些数据从MySQL表导入Oracle表和MS SQL Server表。它从MySQL到SQL Server运行良好,但是当我想导入Oracle时出现错误。
我要导入的表包含数据类型为DT_R8的属性(unitPrice)。
Oracle的目标数据类型是DT_NUMBERIC,您可以在捕获中看到。
我添加了一个转换步骤,将unitPrice数据从DT_R8转换为DT_NUMERIC。
它不起作用,我收到以下错误。
我找到了错误的详细信息:
尝试将字符串转换为数字时,会发生ORA-01722(“无效数字”)错误,并且无法将字符串转换为有效数字。有效数字包含数字'0'到'9',可能有一个小数点,字符串开头或结尾的符号(+或 - ),或'E'或'e'(如果它是浮点数)科学记数法中的点数)。禁止所有其他角色。
但是,我不知道如何解决。
编辑:我添加了一个组件,将行/错误重定向到Excel文件。
以下屏幕截图显示了该过程的结果,包括错误:
通过浏览记录的仅有3000行,似乎该进程只接受int值而不是真实的。因此,如果价格等于10,那就没关系,但如果它是10,5就失败了。
有什么想法解决这个问题?
答案 0 :(得分:2)
您的NLS环境与预期的环境不匹配。默认情况下,Oracle假定","是分组角色和"。"是小数点分隔符。确保您的会话使用NLS_NUMERIC_CHARACTERS参数的正确值。