sqlldr加载csv文件

背景:每一天会生成一堆CSV文件,要求将这些文件定时插入到数据库中。

实现思路:定位到工作目录中,根据当前日期生成日期目录,然后找出这个目录中的所有csv文件,循环使用sqlldr加载数据。

中间遇到的问题:control中的infile路径是写死的,不能传值,所以用动态生成控制文件的方法,曲线救国。

部署:将下面代码存到bat文件中,然后再windows下开启定时任务,批量执行这个脚本。就可以实现上述目标。

代码参考如下:

@echo off

set work_path=D:\CSVTest\
D:
cd %work_path%%date:~0,4%%date:~5,2%%date:~8,2%
for /R %%s in (*.csv) do (
echo load data > %work_path%control.ctl
echo infile '%%s' >> %work_path%control.ctl
echo append into table dept_test >> %work_path%control.ctl
echo >> %work_path%control.ctl fields terminated by ','
echo >> %work_path%control.ctl optionally enclosed by '^"'
echo >> %work_path%control.ctl ^(deptno,dname,sloc^)
 sqlldr userid = hd40/hd40@xftest control = %work_path%control.ctl log = %work_path%conrtol.log
)
pause

你可能感兴趣的:(工作总结)