解决大批量数据插入mysql问题:使用mysqlimport工具从文件中导入

版权声明:QQ:763905926 未经允许请勿转载,转载请注明出处! https://blog.csdn.net/lms1008611/article/details/89481084

    在我们日常项目中,经常会涉及对mysql数据库的读写操作,当需要大批量导入数据时,使用传统的insert方式,会使效率非常慢,解决的办法有:1、拼接sql  2、使用存储过程  3、使用工具从文件中导入。在这里我们要介绍的是使用mysqlimport工具导入。一般来说,在我们安装完成mysql后,该工具已经安装好了,直接使用即可。

    首先来了解下mysqlimport工具的基本配置项,打开终端,输入mysqlimport --help,即可看到对应的选项含义,现在我们只提取几个重要的来做说明:
    

-h mysql户主机IP, 例如 -h 127.0.0.1
-u mysql登录用户名 ,例如 -u username
-p mysql用户名对应登录密码(-p与密码之间不能有空格),例如 -ppassword
-L 代表取本地主机的所有文件
--fields-terminated-by 待导入文件中字段数据的分隔符

了解了以上基本配置项,我们来做实践一下:把dat_acct_item_919_201901.csv文件中的数据导入到数据库为LMS,表名为dat_acct_item_919_201901的表中,需要注意的一点是:文件名=表名,否则无法导入。

dat_acct_item_919_201901.csv文件中数据格式如下,数据以","分隔,

所以导入命令如下为:mysqlimport -h 127.0.0.1 -u root -proot -L LMS /home/delphi/myshare/dat_acct_item_919_201901.csv --fields-terminated-by=","

数据库名LMS 后边 跟的是导入文件的绝对路径,可以把命令封账到脚本里,脚本名为test.sh,脚本里统计的导入时间如下:

starttime=`date +'%Y-%m-%d %H:%M:%S'`
mysqlimport -h 127.0.0.1 -u root -proot -L LMS /home/delphi/myshare/dat_acct_item_919_201901.csv --fields-terminated-by=",";
endtime=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo "本次运行时间: "$((end_seconds-start_seconds))"s"

现在直接运行test.sh脚本,可以看到25452条数据,1S就可以全部倒完:

猜你喜欢

转载自blog.csdn.net/lms1008611/article/details/89481084
今日推荐