2007-05-22
定时加载文件到数据库tips
关键字: oracle sqlldr crontab
装载文本文件,oracle sqlldr是个好用的工具。
如果需要每日装载特定目录里面的所有文件,因为文件名不确定,所以得用shell来获得文件名然后传给sqlldr 的data属性。代码如下:
即使用了control文件也能在外面指定data的。
control文件里面编程性比较弱,在infile参数里面可以识别shell中的变量,但是在数据定义里面就无法识别了,比如字段 load_date 我想从$laod_date变量里面取值,写成 load_date "$load_date" 是无法识别的。但是写成特定值是可以的,如 load_date "20070522"
但是如果固定值是"00000000"的话,即使load_date字段是char(8),导入后也只剩下一个0,sqlldr把它当作数字处理掉了。所以必须写成 load_date constant "00000000"
如果使用crontab来做定时执行,环境变量是值得留意设置的。因为crontab默认的PATH只有/usr/bin:/bin。所以在调用sqlldr之前得把$ORACLE_HOME/bin加到PATH中。
但是这样还不够,没有ORACLE_BASE和ORACLE_HOME变量,sqlldr将报错说:
Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not found; No message file for product=RDBMS, facility=UL
sqlldr导入中文数据可能碰到乱码,设置CHARACTERSET ZHS16GBK(数据库字符集)能解决这个问题。
怪异的是通过securecrt telnet到服务器上sqlldr运行即使不加characterset也不会乱码,但是用crontab调度的方式就乱码了。
如果需要每日装载特定目录里面的所有文件,因为文件名不确定,所以得用shell来获得文件名然后传给sqlldr 的data属性。代码如下:
for file in `ls $daily_dir` do echo $file load_date=`expr substr $file 1 8` echo $load_date sqlldr userid=$load_user/$load_password data=$daily_dir/$file control=$load_dir/ctl/load_daily_custinfo.ctl log=$load_dir/log/load_dailycustinfo.log rows=1024 parallel=true& wait mv $daily_dir/$file $load_dir/data/daily_bak done
即使用了control文件也能在外面指定data的。
control文件里面编程性比较弱,在infile参数里面可以识别shell中的变量,但是在数据定义里面就无法识别了,比如字段 load_date 我想从$laod_date变量里面取值,写成 load_date "$load_date" 是无法识别的。但是写成特定值是可以的,如 load_date "20070522"
但是如果固定值是"00000000"的话,即使load_date字段是char(8),导入后也只剩下一个0,sqlldr把它当作数字处理掉了。所以必须写成 load_date constant "00000000"
如果使用crontab来做定时执行,环境变量是值得留意设置的。因为crontab默认的PATH只有/usr/bin:/bin。所以在调用sqlldr之前得把$ORACLE_HOME/bin加到PATH中。
但是这样还不够,没有ORACLE_BASE和ORACLE_HOME变量,sqlldr将报错说:
Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not found; No message file for product=RDBMS, facility=UL
sqlldr导入中文数据可能碰到乱码,设置CHARACTERSET ZHS16GBK(数据库字符集)能解决这个问题。
怪异的是通过securecrt telnet到服务器上sqlldr运行即使不加characterset也不会乱码,但是用crontab调度的方式就乱码了。
- 17:50
- 浏览 (2368)
- 评论 (2)
- 分类: Programming
- 进入论坛
- 相关推荐
- 浏览: 382643 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
Gmail
共 8 张
共 8 张
最新评论
-
java encoding参考
Good ,thanks.
-- by zuowei -
有多少异常可以重来
我今天也遇到这个问题,才搜到这个帖子~ 还没有解决,等恢复哦
-- by javamanlcy007 -
有多少异常可以重来
这个错误解决了,又抱了别的错误~
-- by iceworld4143 -
有多少异常可以重来
解释不太懂,我也遇到这个问题了,可是我没用ant。 等回复。
-- by iceworld4143 -
考试不及格
证券从业资格考试
-- by eyejava






评论排行榜