2014-09-29 24 views
0

我想一個sql裝載機在名爲ID_CARGA現場充電,這是一個在數據庫中的number(18)錯誤在SQL裝載機,號碼無效ORA-01722

我在裝載機這一行:

ID_CARGA(1:18) ":ID_CARGA", 

但是,當我嘗試加載此數據:

000000000000000000 

說是ORA-01722,我怎麼能加載這個值作爲一個有效的數字?

000000000000000000 like 0 
000000000000000001 like 1 
000000000000000150 like 150 

非常感謝!

回答

0

試試這個:

ID_CARGA position(1:18) NUMBER "TO_NUMBER(:ID_CARGA)" 
0

你並不需要有":ID_CARGA"在這樣的控制文件:

ID_CARGA(1:18) ":ID_CARGA", 
與描述了一個固定的 格式的數據的控制文件

具體來說,所有你需要做的是這樣的:

ID_CARGA position(1:18), 

通常,你如果你要調用一個SQL函數都會有的 ID_CARGA列數據描述的引用部分。在您的特定 情況下,沒有SQL函數被調用,因此它是不必要的。

當我運行這個修改的形式,我的數據加載罰款。

這是我的例子變化:

CREATE TABLE "SCOTT"."TEST" 
    ( "ID_CARGA" NUMBER(18,0) 
    ); 

控制文件:

OPTIONS (SKIP=0) 
LOAD DATA 
INFILE * 
BADFILE 'test_bad.bad' 
DISCARDFILE 'test_dis.dsc' 
APPEND 
INTO TABLE SCOTT.TEST 
(
ID_CARGA position(1:18) 
) 
BEGINDATA 
000000000000000000 
000000000000000001 
000000000000000150 

[email protected]> 
[email protected]> CREATE TABLE scott.test 
    2 (id_carga NUMBER(18,0) 
    3 ); 

Table created. 

[email protected]> commit; 

Commit complete. 

[email protected]> SELECT * FROM scott.test 
    2 ; 

    ID_CARGA 
========== 
     0 
     1 
     150