求C\C++源码,遍历前一天某路径下的log文件并将其写进数据库解决办法
求C\C++源码,遍历前一天某路径下的log文件并将其写进数据库
在每天的凌晨1点钟开始遍历前一天的log文件,log文件名是根据日期命名的,将前一天的log文件写进数据库。领导给安排的人物,可我没做过这些啊,求大侠们帮帮忙,小弟感激不尽啊。
------解决方案--------------------
1 遍历目录
2 写一个函数,判断是否是前一天的Log
3 是的话,就读LOG文件,写二进制到表里面
------解决方案--------------------
思路如下:
为了最大限度的提高程序运行速度和效率,每天的LOG放在一个指定的文件下,一般文件夹如下:年\月\日\*.log
程序实现如下
1、开辟一个线程,获取当前时间,当前时间定在1:00左右
2、连接数据库
3、获取前一天时间的文件夹,将该文件夹下的所有LOG文件一个一个的读取,并写入数据库
类、函数:ifstream、FindFirstFile、 FindNextFile
4、关闭数据库
建议:
不要对产生的每个LOG文件直接写入数据库,要将每天的所有LOG文件一起写入数据库;
将每天的LOG文件放入指定的文件夹,便于程序实现高效,同时便于备份等其他操作,如果不这样做的话,
------解决方案--------------------
数据库参阅: http://www.vckbase.com/document/viewdoc/?id=719
将数据文件读取,放入到VARIANT类型对应的位置,设置VARIANT的类型,即可。
------解决方案--------------------
------解决方案--------------------
不知道你数据库是什么结构,到底是直接将整个文件以二进制方式存放呢,还是读取文件信息然后将信息存放进数据库呢。
前一种的话 你就直接以二进制打开 拷贝到内存中然后存放
第二种的话 你就用fscanf类的函数格式化一下
------解决方案--------------------
在每天的凌晨1点钟开始遍历前一天的log文件,log文件名是根据日期命名的,将前一天的log文件写进数据库。领导给安排的人物,可我没做过这些啊,求大侠们帮帮忙,小弟感激不尽啊。
------解决方案--------------------
1 遍历目录
2 写一个函数,判断是否是前一天的Log
3 是的话,就读LOG文件,写二进制到表里面
------解决方案--------------------
思路如下:
为了最大限度的提高程序运行速度和效率,每天的LOG放在一个指定的文件下,一般文件夹如下:年\月\日\*.log
程序实现如下
1、开辟一个线程,获取当前时间,当前时间定在1:00左右
2、连接数据库
3、获取前一天时间的文件夹,将该文件夹下的所有LOG文件一个一个的读取,并写入数据库
类、函数:ifstream、FindFirstFile、 FindNextFile
4、关闭数据库
建议:
不要对产生的每个LOG文件直接写入数据库,要将每天的所有LOG文件一起写入数据库;
将每天的LOG文件放入指定的文件夹,便于程序实现高效,同时便于备份等其他操作,如果不这样做的话,
------解决方案--------------------
数据库参阅: http://www.vckbase.com/document/viewdoc/?id=719
将数据文件读取,放入到VARIANT类型对应的位置,设置VARIANT的类型,即可。
------解决方案--------------------
------解决方案--------------------
不知道你数据库是什么结构,到底是直接将整个文件以二进制方式存放呢,还是读取文件信息然后将信息存放进数据库呢。
前一种的话 你就直接以二进制打开 拷贝到内存中然后存放
第二种的话 你就用fscanf类的函数格式化一下
------解决方案--------------------
- Perl code
#! perl -w use strict; use warnings; use DBI; &main(); #按照既定格式生成文件名 sub getlogfile { #eg "2012-12-12.log"; } sub main { #假设是mysql数据库 my $dbh = DBI->connet("DBI:mysql:database=db2;host=localhost", "joe", "guessme", {'RaiseError' => 1}); my $logdir = ''; my $logfile = &getlogfile(); my $sql = 'insert into tablename (a,b,c,e,s)values'; OPEN(FH,"$logdie/$logfile"); while(<FH>) { #log formate : 2012-01-16 14:26 user logstring 12312 s/\s/','/g; $sql .= "('$_'),"; } $sql =~ s/,$//g; # execute INSERT query my $rows = $dbh->do($sql); print "$rows row(s) affected "; # clean up $dbh->disconnect(); }
------解决方案--------------------