linux shell 脚本 解析固定格式的文件导入数据库

假设文件名叫word.txt要解析这个文件然后每个[]里面是一个字段然后录入数据库里~~~~~~word.txt的格式我发图片了大概是这样[2012-03-0411:20... 假设文件名叫word.txt 要解析这个文件
然后每个[]里面是一个字段然后录入数据库里~~~~~~
word.txt的格式我发图片了

大概是这样
[2012-03-04 11:20:24] [17] [357242043237517]
[2012-03-04 11:20:24] [17] [357242043237517]
[2012-03-04 12:52:20] [17] [359372041227505]
[2012-03-04 12:52:20] [17] [359372041227505]
[2012-03-04 13:05:07] [27] [354705041522190]
[2012-03-04 13:05:10] [27] [354705041522190]
[2012-03-04 13:56:16] [17] [359372041227505]
[2012-03-04 13:56:16] [17] [359372041227505]
[2012-03-04 16:27:07] [12] [860173013572940]
[2012-03-04 16:44:51] [17] [359372041227505]
[2012-03-04 16:44:51] [17] [359372041227505]
[2012-03-04 18:24:56] [12] [358347040242987]
[2012-03-04 20:10:23] [27] [860645000059213]
[2012-03-04 20:39:27] [17] [359372041227505]
[2012-03-04 20:39:27] [17] [359372041227505]

小弟我从来没写过shell 现在求各位帮忙啊~~高分送上
我的QQ:1423六八4022
展开
 我来答
cantholdit
2012-03-20 · TA获得超过409个赞
知道小有建树答主
回答量:605
采纳率:0%
帮助的人:418万
展开全部
#!/bin/sh
username="yourusername"
password="yourpassword"
dbname="yourdbname"
tablename="yourtablename"

cat word.txt | while read line
do
{
field1=`echo $line | tr -d '['| tr -d ']'| cut -d' ' -f1-2}`
field2=`echo $line | tr -d '['| tr -d ']'| cut -d' ' -f3}`
field3=`echo $line | tr -d '['| tr -d ']'| cut -d' ' -f4}`

###################################################数据库输入

temp=`echo "describe $tablename" | mysql -u $username -p$password "$dbname" | sed '1d' | awk '{print $1}'`
head="INSERT INTO $tablename VALUES ("
tail=");"
tt=`
for loop in $temp
do
eval echo "\'"\\$$loop"\',"
done
`
value=`echo "$head$tt$tail"`
sql=`echo "$value" | sed 's/,)/)/g'`
echo "$sql" | mysql -u $username -p$password "$dbname"

}
done
####数据库自己建立,库名,表名,用户名,密码在开头自己定义,
###你数据库字段名分别为field1 field2 field3
butiange01
2012-03-20
知道答主
回答量:43
采纳率:0%
帮助的人:22.6万
展开全部
什么数据库(oracle,db2)?啥平台(aix?)尽量提供全面信息呃,shell的版本有时候也得说明,楼上的差不多吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Vegetable_B
2018-03-19
知道答主
回答量:1
采纳率:0%
帮助的人:892
引用cantholdit的回答:
#!/bin/sh
username="yourusername"
password="yourpassword"
dbname="yourdbname"
tablename="yourtablename"

cat word.txt | while read line
do
{
field1=`echo $line | tr -d '['| tr -d ']'| cut -d' ' -f1-2}`
field2=`echo $line | tr -d '['| tr -d ']'| cut -d' ' -f3}`
field3=`echo $line | tr -d '['| tr -d ']'| cut -d' ' -f4}`

###################################################数据库输入

temp=`echo "describe $tablename" | mysql -u $username -p$password "$dbname" | sed '1d' | awk '{print $1}'`
head="INSERT INTO $tablename VALUES ("
tail=");"
tt=`
for loop in $temp
do
eval echo "\'"\\$$loop"\',"
done
`
value=`echo "$head$tt$tail"`
sql=`echo "$value" | sed 's/,)/)/g'`
echo "$sql" | mysql -u $username -p$password "$dbname"

}
done
####数据库自己建立,库名,表名,用户名,密码在开头自己定义,
###你数据库字段名分别为field1 field2 field3
展开全部
你这脚本运行不起来 编译报错 不信你试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式