effort0209

最近和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

分类:

技术点:

相关文章: