3、规则文件入库
filetodb.sh 数据库 用户名 密码 表空间 表名 待入库文件 文件分隔符 控制字
例:filetodb.sh "CHNDB1" "dbchnadm" "dbpwd" "CHN_RWD" "myTab01" "myfile01.txt" "," "1 c1,2 c2"
作用:将逗号分隔的规则文件"myfile01.txt"第一列、第二列数据存入数据表"myTab01"
------------程序源码--------------
########################################################################
##规则文件入库
##功能:执行脚本同时输入 数据库、用户名、密码、表名、待入库文件、文件分隔符、控制字等信息进行规则入库
##例如:filetodb.sh "CHNDB1" "dbchnadm" "dbpwd" "CHN_RWD" "myTab01" "myfile01.txt" "," "1 c1,2 c2"
##其中,"1 c1,2 c2" 1、2表示待入库文件的第1、第2列,c1、c2表示表名
########################################################################
#!/bin/sh
database=$1
username=$2
password=$3
tablename=$4
filename=$5
seprator=$6
control=$7
##数据库连接执行函数
exec_sql()
{
sqlplus -s <$1;
commit;
exit
eof
}
##将输入的控制字写入NUM文件
touch num
echo $control>>num
##提取NUM文件中数据并规范输出给c1 c2 c3 c4
awk -F'[ ,]' '{printf $1" "$2" "$3" "$4"\n"}' num|while read c1 c2 c3 c4
do
####通过获取的c1 c2 c3 c4 规范读取文件并传送给SQL语句
awk -F$seprator '"$c1" "$c3"{printf $1 " " $2"\n"}' $filename | while read code1 code2
do
EXEC_SQL="insert into $tablename (${c2},${c4}) values('${code1}','${code2}')"
exec_sql "${EXEC_SQL}"
echo "${EXEC_SQL}"
done
done
rm num
-----------输入指令---------------
filetodb.sh "crmkfdb" "dbrwdadm" "dbrwdadm" "liujqc" "myfile.txt" "," "1 id,2 name"
---------------------------------
test1.sh "1 c1,2 c2"
阅读(915) | 评论(0) | 转发(0) |