我想在名为ID_CARGA
的字段中为sql加载器收费,这个是数据库中的number(18)
。
我在装载机这行:
ID_CARGA(1:18) ":ID_CARGA",
但是当我尝试加载这些数据时:
000000000000000000
说ORA-01722
,如何将此值加载为有效数字?
000000000000000000 like 0
000000000000000001 like 1
000000000000000150 like 150
非常感谢!
答案 0 :(得分:0)
试试这个:
ID_CARGA position(1:18) NUMBER "TO_NUMBER(:ID_CARGA)"
答案 1 :(得分: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
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