快速导入100万条Excel数据到MySql

在CentOS7和MySql 5.7环境下,通过命令行对比了将100万条Excel数据以SQL语句和CSV格式导入MySql的效率。结果显示,使用Myisam引擎并配合`LOAD DATA INFILE`命令的CSV导入方法在2.72秒和1.06秒内完成,远优于Innodb,并且`LOAD DATA`比`SOURCE`命令更快。

因业务需要,将100万条Excel数据导入MySql
OS : CentOS7 , MySql 5.7
做了2个纯命令导入测试,不考虑phpmyadmin,navicate导入.

首先MySql调整全局变量

set  max allowed packet =104857600  (100Mb)
set wait_timeout=288000
set interactive timeout=288000

此次是直接在将文件放在server上,所以只调整上面三个.
远程调用可能还 需要调整,
bulk_insert_buffer_size=120M 
MYISAM_SORT_BUFFER_SIZE=104857600 ;
KEY_BUFFER_SIZE=256217728
对于有主键的需要先关闭
 alter table ${table_name} disable keys; 

1 将excel 做成sql批量数据插入语句,没错values后有100万条.
insert.txt 共有40MB. 生成sql语句格式如下

CONCATENATE("insert into 表名 (列1,列2,列3) values ('",A1,"','",B1,"','",C1,"');")

分别使用Myisam,Innodb引擎和Source命令
在这里插入图片描述
如果不修改 max allowed packet 默认值就会出现 Server gone away.
Myisam引擎具有明显优势,只花了2.72sec

2 将excel数据另存为csv, 使用Utf-8编码,生成insert2.csv 36Mb ,100万行 .
将insert2.csv拷贝到 /var/lib/mysql-file/
使用load data in file 导入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值