oracle进行sqlldr实现文件列拼接,并入库成日期类型

问题描述:文本文件准备sqlldr入库,
文件列 a,b,c,d,e
表字段 a,b,c,d,e,f
我sqlldr入库 文件列a,b,c,d,e对硬表的a,b,c,d,e 但是表字段f必须用文件列的a和b串接的结果入库
其中a是天日期串,b是小时字段
f则需要a与b拼接,并且f是date

1、表字段如下
create table nwom.test_sqlldr
(
a varchar2(12),
b varchar2(12),
c varchar2(12),
d varchar2(12),
e varchar2(12),
f date
)

2、test.txt文件列如下
a,b,c,d,e
20171204,12,3,4,5
20171123,08,9,10,25
3、实现入库test.ctl脚本如下
OPTIONS(SKIP=1)
LOAD DATA
CHARACTERSET ZHS16GBK
INFILE  'D:\test\test.txt'  "str X'0D0A'"
APPEND
INTO TABLE nwom.test_sqlldr
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(
a,
b,
c,
d,
e,
f  date "yyyy/mm/dd hh24:mi:ss" ":a||:b")

这里关键点在于date "yyyy/mm/dd hh24:mi:ss" ":a||:b"
date作为指定日期串的格式,:a||:b作为取到a列和b列的值,
冒号:的作用就相当于在触发器里的变量取值,也相当于在plsql过程里的变量赋值取值一般
4、调用sqlldr命令入库
sqlldr userid=nwom/nwom@22_NWOM control=D:\test\test.ctl log=D:\test\test.log


你可能感兴趣的:(oracle进行sqlldr实现文件列拼接,并入库成日期类型)