301项目中遇到一个问题,医院的排班信息文件原则上是每月月底更新,但在试投产期间需要不定时导入。
项目中spring管理的任务调度很不灵活,因为每次修改都要重启服务器。
所以暂时采取使用sql loader手工导入。csp那边采用的C模块操作文件写入数据库,
相比之下,sql loader强大无比。
只需要2个文件,一行命令。
文件1.hosinfo.ctl
核心文件,控制文件。定义需要导入的文件路径,分隔符,表名以及字段。
内容:
load data
infile 'd:/hb20110726.txt' //文本路径
append into table t_hosinfo_bak //表名
fields terminated by "|" optionally enclosed by '"' // 分隔符 |
TRAILING NULLCOLS //此句定义下方字段中,yiyuanid在txt文本中不存在,只是同时自动插入1.解决了一个很大的阻力。
也可以吧1换为序列的nextval 自增主键。 如果字段完全匹配可不写此句。
(REGDATE,REGROWID,OFFICE,DOCTOR,ZHICHENG,NUMTYPE,TIME,TATOLNO,MONEY,SKILL,OFFICEID,YIYUANID "1")
文件2.需导入的txt文件
命令:在dos下执行 而不需要在sqlplus下执行
sqlldr jpren/jpre control=d:\hosinfo.ctl log=d:\a.log //log路径记录信息。