使用mysql load命令将业务生成的log导入到数据库中
2013-08-10 21:40
375 查看
1. 业务介绍:
现在有这样一些log文件,文件内容每行一条记录:
-rw-r--r-- 1 root root 3364 6月 26 16:43 face-origin_BACKUP_2013062616.log
-rw-r--r-- 1 root root 1491 6月 26 17:12 face-origin_BACKUP_2013062617.log
-rw-r--r-- 1 root root 3205 6月 27 11:20 face-origin_BACKUP_2013062711.log
-rw-r--r-- 1 root root 7644 6月 27 14:57 face-origin_BACKUP_2013062714.log
-rw-r--r-- 1 root root 2224 6月 27 15:28 face-origin_BACKUP_2013062715.log
-rw-r--r-- 1 root root 26235 6月 27 16:31 face-origin_BACKUP_2013062716.log
-rw-r--r-- 1 root root 6001 6月 30 16:54 face-origin_BACKUP_2013063016.log
-rw-r--r-- 1 root root 25936 7月 1 09:44 faces-origin_BACKUP_2013070109.log
-rw-r--r-- 1 root root 11766 7月 1 10:59 face-origin_BACKUP_2013070110.log
-rw-r--r-- 1 root root 98589 7月 1 11:59 face-origin_BACKUP_2013070111.log
-rw-r--r-- 1 root root 5777 7月 1 14:20 face-origin_BACKUP_2013070114.log
现在业务需要将这些生成的log文件内容分别按照给定的时间读入到数据库零时表中,然后按照内容记录的关键字,将含这些特定关键字的内容插入到一个正式表中。
2. 数据库表结构:
零时表:
CREATE TABLE `total_log_content` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`logcontent` text COMMENT 'log内容',
`logtime` date DEFAULT NULL COMMENT 'log生成日期',
`addtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'log入库日期',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1979 DEFAULT CHARSET=utf8;
正式表(结构同上):
CREATE TABLE `face_ulpos_origin` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`logcontent` text,
`addtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`logtime` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3070 DEFAULT CHARSET=utf8;
3. 实现脚本如下:
#!/bin/bash
export LANG=zh_CN.UTF-8
HOSTNAME="192.168.1.146"
PORT="3306"
USERNAME="username"
PASSWORD="passwd"
DBNAME="LogDB"
log_path='/u1/logs/face-origin'
command="INSERT INTO face_ulpos_origin(logcontent,addtime,logtime) (SELECT logcontent,addtime,logtime FROM total_log_content WHERE logcontent LIKE '%face-ulpos%' AND logcontent LIKE '%consumeHyCard%');"
start_date=$1
end_date=$2
if [ -z $start_date ] || [ -z $end_date ];then
echo "please add two date after the command like './load2db 2013-07-01 2013-07-10'"
exit 1
fi
t1=`date -d $start_date +%s`
t2=`date -d $end_date +%s`
cd $log_path
log_file=`ls *.log`
for i in $log_file
do
filedate=`stat $i | grep Modify | awk '{print $2}'`
t3=`date -d $filedate +%s`
if [[ $t3 -ge $t1 && $t3 -le $t2 ]];then
cp $i $(echo $i|sed 's/\.log/\.txt/')
for j in `ls *.txt`
do
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"load data local infile '$log_path/$j' into table total_log_content(logcontent) set logtime='$filedate',addtime = CURRENT_TIMESTAMP;"
rm -rf $j
done
fi
done
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${command}"
本文出自 “zhangdh开放空间” 博客,请务必保留此出处http://linuxblind.blog.51cto.com/7616603/1269496
现在有这样一些log文件,文件内容每行一条记录:
-rw-r--r-- 1 root root 3364 6月 26 16:43 face-origin_BACKUP_2013062616.log
-rw-r--r-- 1 root root 1491 6月 26 17:12 face-origin_BACKUP_2013062617.log
-rw-r--r-- 1 root root 3205 6月 27 11:20 face-origin_BACKUP_2013062711.log
-rw-r--r-- 1 root root 7644 6月 27 14:57 face-origin_BACKUP_2013062714.log
-rw-r--r-- 1 root root 2224 6月 27 15:28 face-origin_BACKUP_2013062715.log
-rw-r--r-- 1 root root 26235 6月 27 16:31 face-origin_BACKUP_2013062716.log
-rw-r--r-- 1 root root 6001 6月 30 16:54 face-origin_BACKUP_2013063016.log
-rw-r--r-- 1 root root 25936 7月 1 09:44 faces-origin_BACKUP_2013070109.log
-rw-r--r-- 1 root root 11766 7月 1 10:59 face-origin_BACKUP_2013070110.log
-rw-r--r-- 1 root root 98589 7月 1 11:59 face-origin_BACKUP_2013070111.log
-rw-r--r-- 1 root root 5777 7月 1 14:20 face-origin_BACKUP_2013070114.log
现在业务需要将这些生成的log文件内容分别按照给定的时间读入到数据库零时表中,然后按照内容记录的关键字,将含这些特定关键字的内容插入到一个正式表中。
2. 数据库表结构:
零时表:
CREATE TABLE `total_log_content` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`logcontent` text COMMENT 'log内容',
`logtime` date DEFAULT NULL COMMENT 'log生成日期',
`addtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'log入库日期',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1979 DEFAULT CHARSET=utf8;
正式表(结构同上):
CREATE TABLE `face_ulpos_origin` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`logcontent` text,
`addtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`logtime` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3070 DEFAULT CHARSET=utf8;
3. 实现脚本如下:
#!/bin/bash
export LANG=zh_CN.UTF-8
HOSTNAME="192.168.1.146"
PORT="3306"
USERNAME="username"
PASSWORD="passwd"
DBNAME="LogDB"
log_path='/u1/logs/face-origin'
command="INSERT INTO face_ulpos_origin(logcontent,addtime,logtime) (SELECT logcontent,addtime,logtime FROM total_log_content WHERE logcontent LIKE '%face-ulpos%' AND logcontent LIKE '%consumeHyCard%');"
start_date=$1
end_date=$2
if [ -z $start_date ] || [ -z $end_date ];then
echo "please add two date after the command like './load2db 2013-07-01 2013-07-10'"
exit 1
fi
t1=`date -d $start_date +%s`
t2=`date -d $end_date +%s`
cd $log_path
log_file=`ls *.log`
for i in $log_file
do
filedate=`stat $i | grep Modify | awk '{print $2}'`
t3=`date -d $filedate +%s`
if [[ $t3 -ge $t1 && $t3 -le $t2 ]];then
cp $i $(echo $i|sed 's/\.log/\.txt/')
for j in `ls *.txt`
do
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"load data local infile '$log_path/$j' into table total_log_content(logcontent) set logtime='$filedate',addtime = CURRENT_TIMESTAMP;"
rm -rf $j
done
fi
done
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${command}"
本文出自 “zhangdh开放空间” 博客,请务必保留此出处http://linuxblind.blog.51cto.com/7616603/1269496
相关文章推荐
- 数据库导入导出命令使用
- 在oracle中 生成大规模数据 500万条 (使用导入数据方式 sqlldr 导入命令 *.ctl文件)
- 使用keytool命令生成证书并导入java的cacerts证书库
- 使用MySQL WorkBench和命令两种导入数据库
- 如何使用mysqldump命令导入导出数据库下的数据或表结构(远程or本地都适合)
- LINUX下如何使用sqlldr命令导入大数据至数据库中
- 如何使用bat 备份mysql数据库 ,以及还原数据库,并且生成log 日志
- Java中使用Oracle的客户端 load data和sqlldr命令执行数据导入到数据库中
- LNMP 下使用命令导出导入 MySQL 数据库教程
- 使用数据泵expdp命令和impdp命令对数据库的数据进行导入导出
- Java中使用Oracle的客户端 load data和sqlldr命令执行数据导入到数据库中
- MySQL使用mysqldump命令导入数据库时包含存储过程
- [导入]C#分析数据库结构,使用XSL模板自动生成代码
- Oracle中使用IMP Dos命令 导入DIC数据库备份过程
- Ubuntu+Mysql之从格式化文件导入数据库——Load Data 命令使用及local-infile=1用法
- [导入]C#分析数据库结构,使用XSL模板自动生成代码
- mysql使用笔记:常用的数据库命令
- 数据库逆向框架代码生成工具:MyBatis Generator的使用
- mysql命令导入、导出数据库
- 使用sqluldr2实现将Oracle数据无落地快速导入Greenplum数据库