将csv文件导入oracle数据库

最近和XX单位进行一个项目的开发工作,对方的工作方式真让人不敢恭维,就定期提供个文件都话语多多,没法子我方只能定期从其远程服务器检测,并提取倒库了,借此将csv文件数据导入oracle的脚本贴出来,免得忘了这东西都是咋来的。

因具体原因,此脚本并没有实现全部自动化:

首先是,提取CSV文件的脚本:

View Code
#!/bin/sh -

#######首先提取一卡三号国际费率$1参数为文件名
echo "open xx.xxx.x.xxx
user xxx xxx
binary
cd /RateTable/
get $1 1c3h_gjj_fee/$1
bye" | ftp -n

#######组装入表新文件
cd /home/effort/1c3h_gjj_fee
cat    $1    |awk -v startdate=$2 -v enddate=$3 -F, 'BEGIN{OFS=","} \
 {sub(/[\r\n]/, "", $4); if($1 != "Rate_DESC" && $2 != 86 && $2 != 852){ print $1, (0""0""$2), $4, startdate, enddate > "/home/effort/1c3h_gjj_fee2/1c3h_gjj_fee.csv" } }'
 
#######csv文件入库
sqlldr userid=settle/settle@amaxchange control='/home/effort/csv_data.ctl' log=log.txt bad=bad.txt

其次,ctl配置文件:

View Code
load data
infile '/home/effort/1c3h_gjj_fee2/1c3h_gjj_fee.csv'
append into table TP_SETTLE_FEE_GJJ_1C3H
fields terminated by ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
    settle_obj,
    settle_code,
    settle_fee,
    start_time,
    end_time
)

上述脚本的执行:sh gjj_fee.sh IDD_RateTable_201212.csv 20121201 20121231

posted @ 2013-03-24 18:25  顺水的船  阅读(1111)  评论(0)    收藏  举报