通过SQLloader插入编号时出错

时间:2015-12-21 16:48:25

标签: oracle insert sql-loader

我试图通过SQL * loader将数值插入Oracle DB,但我仍然得到错误:

  

记录1:已拒绝 - 表my_table,列column_1出错。   ORA-01722:无效数字

插入值的SQL *加载器的行格式为

column_1  INTEGER  "TO_NUMBER(REPLACE(:column_1, ' ', ''), '99999999D99')" 

虽然我需要插入的值是:30 000 000,00

如果我删除了掩码('99999999D99'),它会插入一个数字但是有问题。插入的值为:807415859

有人可以帮我理解我做错了什么吗?

2 个答案:

答案 0 :(得分:0)

经过几次测试后,答案是:

column_1 "to_number(replace(replace(:column_1, ',', '.'), ' ', ','), '99999999.99')"

答案 1 :(得分:0)

您可能会更容易找到TRANSLATE()功能。一步将逗号转换为句点和空格为NULL。像这样测试:

SQL> select translate('30 000 000,00', ', ', '.') fixed
    from dual;

FIXED
-----------
30000000.00

SQL>

然后完整答案:

column_1 "to_number(translate(:column_1, ', ', '.'), '99999999.99')"

请务必添加空间需要持久的评论!