(12)多线程的运用(2)---- 读取db文件,解析数据入MySql 数据库

前提提要:

最近有一个需求,需要做一个文件导入功能,像一般的文件上传都挺简单的,你可以将文件图片上传到图片服务器上,也可以上传到本地,我今天做的这种是上传到本地。

其中需要注意的是我这个db 文件有点大,300MB 500MB的都有。db文件来源于其他的系统生成的日志文件。

我需要将这些数据读取,并且对其中的一些字段做数据处理,经过测试发现,我对数据一边保存一边解析,需要注意的是:我这里的解析指的是我需要按照我们的需求对字段进行处理,速度会很慢。所以我的做法是先将文件上传到本地,原文件中的字段先原封不动的保存到Mysql中,后面再写程序解析这些数据。

其中我有参考这篇博文:戳这

源码:源码

检测一下整个文件上传效果:

(1)整个文件上传功能我用到了三个表

nas_file是用来记录上传的文件名称和文件路径

nas_log 是我后期用来保存解析后数据的表单。

nas_synology 是保存原数据。

(12)多线程的运用(2)---- 读取db文件,解析数据入MySql 数据库

(2)使用数据库连接工具将这个文件导入到数据库中,看一下是什么效果。用户名和密码都可以不用填写。

(12)多线程的运用(2)---- 读取db文件,解析数据入MySql 数据库

(3)表格中的数据

(12)多线程的运用(2)---- 读取db文件,解析数据入MySql 数据库

总数是:

(12)多线程的运用(2)---- 读取db文件,解析数据入MySql 数据库

(4)浏览器*问一下这个文件上传的接口

(12)多线程的运用(2)---- 读取db文件,解析数据入MySql 数据库

上传到本地的文件如下:

(12)多线程的运用(2)---- 读取db文件,解析数据入MySql 数据库

一个差不多300MB的文件解析入库的时间是150多s.

(12)多线程的运用(2)---- 读取db文件,解析数据入MySql 数据库

此时可以看到这个50多万的数据保存到Mysql中来了。 

(12)多线程的运用(2)---- 读取db文件,解析数据入MySql 数据库

 

其中需要的是:我这个方法还有一个优化的点:如果是普通的解析文件速度会更快,关键是在读取Sqlite 的地方有点耗时,我是一行一行的读下去的,这一点有优化的空间。

还有一个是可以根据分页动态传参查询,举个例子,我现在是查询一整个表,速度自然有点慢,如果只是查询前100条,一下子就执行完了!

关于这个功能还有很多优化的点,如果你有什么好建议,欢迎评论区留言,一起加油吧! 

(12)多线程的运用(2)---- 读取db文件,解析数据入MySql 数据库