• python将IIS日志导入到SQL


    import re
    import os
    import MySQLdb as mdb
    
    def create_table(name): #建表函数
        create_sql = ''' #建表的SQL语句
        create table if not exists %s
        (
        ID int primary key auto_increment,
        DATE date,
        TIME time,
        URL text,
        IP char(15),
        UA text,
        REFERER text,
        STATUS int(3),
        BYTES int
        )
        ''' % name
        cursor.execute(create_sql) #执行SQL语句
    
    def insert_table(data, name): #插入数据函数
        data = data.strip() #去掉前后空格
        if data[0] == '#': #如果以#开头,说明是表头,自动忽略
            pass
        else:
            row = data.split() #用空格分开每行数据
            insert_sql = ''' #插入数据的SQL,取其中的日期,时间,着陆URL,IP地址,UA信息,referer,状态码,下载字节数,第一项是个自动增加的主键
            insert into %s values('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')
            ''' % (name, '', row[0], row[1], row[6], row[10], row[12], row[14], row[16], row[19])
            cursor.execute(insert_sql) #执行插入SQL
    
    pat = re.compile(r'(ex\d{6})\.log') #匹配文件名的正则
    rootdir = 'e:/dream' #根目录设置
    conn = mdb.connect('localhost', 'root', 'root', 'dream') #连接数据库
    cursor = conn.cursor() #数据库指针
    
    for file in os.listdir(rootdir): #遍历根目录
        match = pat.match(file) #匹配文件名
        if match: #如果匹配则执行下面操作,如果不匹配就没行动
            filename = match.group(1) #匹配到的文件名,下面用作表名
            create_table(filename) #用表名建表
            f = open(os.path.join(rootdir, file)) #打开匹配到的文件
            for data in f.readlines(): #遍历文件中的每行数据
                insert_table(data, filename) #将这一行数据插入到建好的表中
            print '%s is over.' % filename #这个文件遍历后提示下
    
    conn.close() #关闭数据库连接
    print 'ok'

    主要使用了MySQLdb将数据导入到数据库中。我是想使用Mysql对网站日志进行分析,于是先将每个日志导入到Mysql中,下一步将使用sql得到一系列细分数据,比如爬虫数据,流量数据等。

    这个程序难度不大,主要是MySQLdb的使用,另外还有一点SQL语句。

    3月12日晚补充:

    尼玛,本来打算自动便利文件夹,然后创建对应table,然后插入每日数据,最后用SQL查询所需数据,前几步都完成了,到最后一步真是麻烦,重复写好多SQL查询不说,感觉一次一次的遍历,效率也很低。想想最简单的方法还是打开文件,然后用python的for来遍历,这样一次就可以遍历完了。

    好赖用这个思路写完了,就当是练习MySQLdb和SQL吧。最后一点代码就不附上了,没啥技术含量。

  • 相关阅读:
    日本最大的汽车品牌:丰田【仅供自己参考】
    读书笔记1
    读书笔记1
    计算机网络笔记1
    ZY凉凉经
    HK凉凉经
    访问一个网站,发生了什么?
    正向代理VS反向代理
    mac下打开hosts文件
    国际手机区号
  • 原文地址:https://www.cnblogs.com/alexkh/p/2954780.html
Copyright © 2020-2023  润新知