从大量文本中提取有效数据导入到数据库

需求:服务端有大量的log日志文件。需要取每个文件的其中两列导入到数据库中

第一版:简单实现

使用cat、awk每次提取一条记录导入到数据库

time cat /Users/wen/Downloads/*.txtaa | awk -F '#' '
    {printf("insert into test.t_user_ip values(\"%s\",\"%s\");", $2,$4)}
' | mysql -h 127.0.0.1 -uroot -p123456

第二版:提高导入数据速度

每条SQL导入1000条数据,如果数据量巨大,使用此方法速度有明显提升。部分逻辑处理,使用php。

time cat /Users/wen/Downloads/*.txtaa | php -B '$data = array();' -R '
    $tmp = explode("#", $argn);
    $data[] = "(\"".$tmp["1"]."\", \"".$tmp["3"]."\")";
    if(count($data) > 1000) {
        $sql = "insert into test.t_user_ip values ".implode(",", $data).";";
        $data = array();
        echo $sql."\n";
    }
' -E ' 
    echo "insert into test.t_user_ip values ".implode(",", $data).";\n";
' | mysql -h 127.0.0.1 -uroot -p123456

** mysql只需要连接一次,然后循环读取SQL并执行 **

关注公众号”web创新之路”,就有机会天天听我瞎哔哔~

    原文作者:Dorm_Script
    原文地址: https://www.jianshu.com/p/63e9879b4807
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞