Linux 下使用awk处理数据并写入数据库
来源:互联网 发布:ubuntu rm删除多个文件 编辑:程序博客网 时间:2024/06/04 23:37
Linux 下使用awk处理数据并写入数据库
一、awk功能使用
awk -F '|' '{print $1}‘
使用-F选项指定分割符,打印‘’第几个字段‘’
二、连接数据库并执行插入操作
mysql -h 10.18.20.10 -uuser -ppassword fxs -N
三、使用awk计算得到每个字段的值
由于第一条记录是字段名称,所以从后去最后一条,使用awk去处固定的字段。在shell中两个反单引号标识执行shell命令行,详单与$(shell命令)的功能。如下:
`(tail -n 1 $i | awk -F '|' '{print $8}')`
表示提取$i文件最后1行,以竖线“|”为分隔符的第8个字段
四、示例代码:
#!/bin/sh
#获取昨天的日期T=`date -d yesterday +%Y%m%d`
#echo "$T"
#将文件移动到指定目录
mv ~/DM_$T* /home/Comparison/XN_data/hour
#列出文件列表写入日志
FILE_LI=`find ./hour -name "DM*"
echo `date` >>/home/Comparison/XN_data/loader_data.log
echo "$FILE_LI" >>/home/Comparison/XN_data/loader_data.log
if [ "$FILE_LI" ];then
for i in $(ls $FILE_LI)
do
#计算数据时间
datatime=$(echo "${i:25:10}")
TIME_ID=`(tail -n 1 $i | awk -F '|' '{print $1}')`
AREA_NAME=`(tail -n 1 $i | awk -F '|' '{print $2}')`
ATTACH_REQ_CNT=`(tail -n 1 $i | awk -F '|' '{print $3}')`ATTACH_SUCC_CNT=`(tail -n 1 $i | awk -F '|' '{print $4}')`
ATTACHSUCCRATE=`(tail -n 1 $i | awk -F '|' '{print $5}')`
ATTACH_REQ_CNT_USR=`(tail -n 1 $i | awk -F '|' '{print $6}')`
ATTACH_SUCC_CNT_USR=`(tail -n 1 $i | awk -F '|' '{print $7}')`
OUTUSERATTACHSUCCRATE=`(tail -n 1 $i | awk -F '|' '{print $8}')`
ATTACHREQDELAY=`(tail -n 1 $i | awk -F '|' '{print $9}')`
PDP_REQ_CNT=`(tail -n 1 $i | awk -F '|' '{print 10}')`
PDP_SUCC_CNT=`(tail -n 1 $i | awk -F '|' '{print $11}')`
PDPSUCCRATE=`(tail -n 1 $i | awk -F '|' '{print $12}')`
PDPREQDELAY=`(tail -n 1 $i | awk -F '|' '{print $13}')`
TAU_REQ_CNT=`(tail -n 1 $i | awk -F '|' '{print $14}')`
TAU_SUCC_CNT=`(tail -n 1 $i | awk -F '|' '{print $15}')`
TAUSUCCRATE=`(tail -n 1 $i | awk -F '|' '{print $16}')`
TAU_REQ_CNT_USR=`(tail -n 1 $i | awk -F '|' '{print $17}')`
TAU_SUCC_CNT_USR=`(tail -n 1 $i | awk -F '|' '{print $18}')`
OUTUSERTAUSUCCRATE=`(tail -n 1 $i | awk -F '|' '{print $19}')`
TAUREQDELAY=`(tail -n 1 $i | awk -F '|' '{print $20}')`
USER_COUNT=`(tail -n 1 $i | awk -F '|' '{print $21}')`
FLOW=`(tail -n 1 $i | awk -F '|' '{print $22}')`
year=${datatime:0:4}
month=${datatime:4:2}
day=${datatime:6:2}
datahour=${datatime:8:2}
datatime=$year"-"$month"-"$day" "$datahour":00:00"
#连接数据库
mysql -h 10.18.20.10 -uuser -ppassword fxs -N <<EOF
#插入数据到表dx_attach_hour
insert into dx_attach_hour(CITY,YEAR,MONTH,dataday,datahour,request,success,delay,attach_rate,CREATE_TIME,MODIFY_TIME,datatime) values('$AREA_NAME','$year','$month','$day','$datahour','$ATTACH_REQ_CNT','$ATTACH_SUCC_CNT','$ATTACHREQDELAY','$ATTACHSUCCRATE','$datatime','$datatime','$datatime');
#插入数据到表dx_bear_hour
insert into dx_bear_hour(CITY,YEAR,MONTH,DAY,HOUR,request,success,delay,bear_rate,CREATE_TIME,MODIFY_TIME,datatime) values('$AREA_NAME','$year','$month','$day','$datahour','$PDP_REQ_CNT','$PDP_SUCC_CNT','$PDPREQDELAY','$PDPSUCCRATE','$datatime','$datatime','$datatime');
#插入数据到表dx_tau_hour
insert into dx_tau_hour(CITY,YEAR,MONTH,DAY,HOUR,request,success,delay,tau_rate,CREATE_TIME,MODIFY_TIME,datatime) values('$AREA_NAME','$year','$month','$day','$datahour','$TAU_REQ_CNT','$TAU_SUCC_CNT','$TAUREQDELAY','$TAUSUCCRATE','$datatime','$datatime','$datatime');
#插入数据到表dx_flow_hour
insert into dx_flow_hour(CITY,YEAR,MONTH,DAY,HOUR,VALUE,CREATE_TIME,MODIFY_TIME,datatime) values('$AREA_NAME','$year','$month','$day','$datahour','$FLOW','$datatime','$datatime','$datatime');
#插入数据到表dx_users_hour
insert into dx_users_hour(CITY,YEAR,MONTH,DAY,HOUR,total_users,CREATE_TIME,MODIFY_TIME,datatime) values('$AREA_NAME','$year','$month','$day','$datahour','$USER_COUNT','$datatime','$datatime','$datatime');
EOF
done
fi
0 0
- Linux 下使用awk处理数据并写入数据库
- Linux下如何使用awk解析json数据
- 读取网络中的数据并写入数据库
- linux 下awk 的使用
- Linux系统资源获取并写入数据库
- 数据库重复写入数据问题处理
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- poi 学习之使用 Apche poi 读取数据库中的数据并写入Excel
- Linux下创建文件、并往文件中写入数据的小程序
- Linux系统下将程序中的数据写入gunplot并绘图
- 使用abap向数据库直接写入数据
- 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
- 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
- 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
- linux下awk的使用+练习
- Linux下的awk使用详解
- Linux系统下awk命令使用
- linux下awk的基本使用
- Roman to Integer
- [C++基础]指针函数与函数指针<详细讲解>
- 笔试面试算法经典--判断二叉树是否是平衡二叉树(Java)
- 一种利用重链剖分优化一类树形动态规划空间复杂度的方法
- Jack-server出错:out of memory error,try increasing heap size
- Linux 下使用awk处理数据并写入数据库
- 排序算法之插入排序
- 不可重复读和幻读的一些区别
- 数组之sort Array中,找出给定数字出现的次数
- 初识.net界面程序(4)——数组排序和计算练习
- HDU 2546 饭卡
- 初识进程
- 大量小文件的存储场景,有什么优化办法
- 笔试面试算法经典--二叉搜索树转有序的双向链表(Java)