已知一个文本文件test.txt 存储了一张数据表,字段名称分别是:名称、年龄、编号。字段之间用!(感叹号)做为分割符。例如第一行是:john!25!10余下行类似,写一个shell,功能是将这个文本文件的内容写入oracle数据库,需要用到awk来实现,至于oracle用到的一些环境可以先自行虚拟一下,例如用户名/密码可以先用 username/password代替 数据库名称用dbname代替,表名称用tablename代替等等,需要替换的麻烦注释一下.
第1个回答 2010-12-08
#
awk -F'!' '{print"insert into tablename values ("$3",'\''"$1"'\'',"$2");"}' stu.dat > stu.sql;
echo 'commit;'>>stu.sql;
cat stu.sql;
#
nohup sqlplus username/password@dbname < stu.sql &本回答被提问者采纳
awk -F'!' '{print"insert into tablename values ("$3",'\''"$1"'\'',"$2");"}' stu.dat > stu.sql;
echo 'commit;'>>stu.sql;
cat stu.sql;
#
nohup sqlplus username/password@dbname < stu.sql &本回答被提问者采纳
第2个回答 2010-12-07
这个没必要用SHELL AWK自己写,完全可以用sqlldr来完成。本回答被网友采纳
第3个回答 2010-12-07
大概思路 你自己替换吧
#!/bin/bash
clear
path=test.txt
dir()
{
sqlplus / as sysdba >> logname.log <<EOF
insert into tablename values($1,$2,$3);
EOF
}
while read line
do
dir $line
done<$path
#!/bin/bash
clear
path=test.txt
dir()
{
sqlplus / as sysdba >> logname.log <<EOF
insert into tablename values($1,$2,$3);
EOF
}
while read line
do
dir $line
done<$path
第4个回答 2010-12-08
每日定时执行的话就写个脚本用sqlldr搞进去,要是偶儿搞一次就复制粘贴,或者搜一把导入的小软件很方便的,网上很多
第5个回答 2010-12-07
呵呵,这个不难。价格100元,可以hi我!