2015-12-21 67 views
0

我嘗試插入通過SQL * Loader的數值爲Oracle數據庫,但我仍然得到錯誤插入的數目:錯誤時通過SQLLOADER

Record 1: Rejected - Error on table my_table, column column_1. ORA-01722: invalid number

其插入值線的形式使用SQL * Loader是

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

,而我需要插入值是:30 000 000,00

如果我取下面膜('99999999D99'),它插入一個數字,但有些不妥。插入的值是:807415859

有人可以幫助我瞭解我做錯了什麼嗎?

+0

您是否嘗試將面具更改爲'99 999 999D99'而不是執行REPLACE?你的SQL * Loader行看起來像 - column_1 INTEGER「TO_NUMBER(:column_1,'999 999 999D99')」 – vmachan

+0

什麼是* actual *文本,對應於插入的值807415859? –

+0

@Maheswaran Ravisankar從.csv文件的實際值是'30 000 000,00' – mikcutu

回答

0

多試驗幾次後,答案是:

column_1 "to_number(replace(replace(:column_1, ',', '.'), ' ', ','), '99999999.99')" 
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')" 

一定要添加評論的空間必須是最後一個!