使用SQL*LOADER加载文本的时候,某些列我希望填写一个默认值,应该怎么做呢?
第一种方式是在创建表的时候,字段上设置一个default约束,然后这样写控制文件:
load data
append into table temp_xxxx
TRAILING NULLCOLS --这行一定要加
(
user_name position(1:1000),
user_age defaultif user_age is null
)
第二种办法是在控制文件中制定默认值,这种方法无疑灵活很多,控制文件这样写:
load data
append into table temp_xxxx
TRAILING NULLCOLS
(
user_name position(1:1000),
user_age "nvl(:user_age, 20)"
a “nvl(null,sysdate)”
)
在控制文件的INTO TABLE段中加入 (F1 POSITION(1:2) INTEGER EXTERNAL "expression")
其中"expression"为你想插入的值表达式,可以是所有允许在insert语句中VALUES字句中出现的表达式都可以。例如:
...
INTO TABLE T1(F1 POSITION(1:2) INTEGER EXTERNAL "DECODE(:F1,V1,0,:F1)",
F2 POSITION(3:4) INTEGER EXTERNAL "NVL(:F2,0)")