Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58007
  • 博文数量: 13
  • 博客积分: 318
  • 博客等级: 二等列兵
  • 技术积分: 185
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-01 19:17
文章分类

全部博文(13)

文章存档

2012年(13)

我的朋友

分类: LINUX

2012-04-26 22:44:56

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"
 
阅读(2334) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~