2

我在将一些数据从 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,则失败。

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

4

1 回答 1

2

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

请参阅为 docu设置全球化支持环境

于 2014-04-24T09:23:22.020 回答