首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将日志文件记录到mysql数据库

问如何将日志文件记录到mysql数据库
EN

Stack Overflow用户
提问于 2015-08-16 13:01:11
回答 1查看 1.1K关注 0票数 2

我有一个日志文件,如下所示:

代码语言:javascript
复制
11:34:17 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:39:17 PM     all      0.09      0.00      0.07      0.09      0.00     99.75
11:44:17 PM     all      0.04      0.00      0.03      0.00      0.00     99.92
11:49:17 PM     all      1.49      0.00      0.49      0.06      0.00     97.96
11:54:17 PM     all     23.27      0.00      0.51      0.05      0.03     76.14
Average ....

我需要将日期、时间、%用户、%system、%idle插入到表中

代码语言:javascript
复制
row_id (int) | date (date) | time (time) | hostname (varchar) | user (decimal) | system (decimal) | idle (decimal)

我需要将时间转换为hh:mm:ii (24小时)。date列需要派生自名为YYYY-MM-DD_hostname_cpu.log的日志文件

我如何在shell脚本中做到这一点?我需要帮助转换时间和抓取主机名,这可以是从1到20的任何长度。

代码语言:javascript
复制
#: awk 'BEGIN { OFS = "," } FNR == 1 { d = substr(FILENAME, 1, 10) } $2 ~ /^[AP]M$/ && $3 != "CPU" { print d, $1 " " $2, $4+$5, $6, $7+$8+$9 }' *_cpu.log >> new_file.log
EN

回答 1

Stack Overflow用户

发布于 2015-08-16 18:20:32

我可以给你一种伪代码:

考虑到YYYY-MM-DD_hostname_cpu.log有多个文件。

代码语言:javascript
复制
# Loop over each file
for inputfile in `ls *.log`; do
# grab date from filename
date=echo $0 | awk -F"_" '{print $0}'
# read line by line from file into variables
cat $inputfile | while read time user system idle; do
# Generate insert statements & pipe them  to mysql.
echo "insert into TABLE values (null, '$date', '$time', '$user', '$system', '$idle');"
done | mysql -uUSER -pPASS database;
done;

通常,为了批量加载这样的文件,我们可以使用MySQL的Load Data Infile语法,您可能希望复习几个use cases。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32031992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档