SQL加载程序出错,编号无效ORA-01722



我想在名为ID_CARGA的字段中向sql加载器收费,这个是数据库中的number(18)

我在装载机上有这一行:

ID_CARGA(1:18) ":ID_CARGA",

但当我尝试加载这些数据时:

000000000000000000

ORA-01722,我如何才能将这些值加载为有效的数字?

000000000000000000 like  0
000000000000000001 like 1
000000000000000150 like 150

非常感谢!

试试这个:

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

您不需要在控制文件中有":ID_CARGA",如下所示:

ID_CARGA(1:18) ":ID_CARGA",

特别是用一个控制文件来描述格式化数据,您所需要做的就是:

ID_CARGA position(1:18),

通常,您会在数据描述中为ID_CARGA列(如果要调用SQL函数)。特别是在这种情况下,没有调用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
SCOTT@dev> 
SCOTT@dev> CREATE TABLE scott.test
  2    ( id_carga NUMBER(18,0)
  3    );
Table created.
SCOTT@dev> commit;
Commit complete.
SCOTT@dev> SELECT * FROM scott.test
  2  ;
  ID_CARGA
==========
         0
         1
       150

最新更新