如何往MySQL中插入100万条数据?

文章介绍了如何处理大量数据导入MySQL数据库的问题,通过使用`LOADDATALOCALINFILE`命令,将100万条数据在13.10秒内高效地插入到`tb_user`表中,对比了批量INSERT方法,显示了`LOADDATA`在大数据导入时的优越性能。
摘要由CSDN通过智能技术生成

需求

现在有一个 数据量 为100万的数据样本 100w_data.sql

其数据格式如下,截取最后十条数据

999991,XxGdnLZObA999991,XxGdnLZObA,XxGdnLZObA,2020-3-18,1
999992,TBBchSKobC999992,TBBchSKobC,TBBchSKobC,2020-9-8,2
999993,rfwgLkYhUz999993,rfwgLkYhUz,rfwgLkYhUz,2020-2-6,0
999994,GQZXukHouW999994,GQZXukHouW,GQZXukHouW,2020-9-16,1
999995,UMNjgaXtnO999995,UMNjgaXtnO,UMNjgaXtnO,2020-3-18,2
999996,WFvQNUotHQ999996,WFvQNUotHQ,WFvQNUotHQ,2020-8-13,0
999997,FrmLUUEXWf999997,FrmLUUEXWf,FrmLUUEXWf,2020-10-4,1
999998,LWVyHCGiij999998,LWVyHCGiij,LWVyHCGiij,2020-4-14,2
999999,TTXdvcnCpL999999,TTXdvcnCpL,TTXdvcnCpL,2020-5-3,0
1000000,sjCFoeKCks1000000,sjCFoeKCks,sjCFoeKCks,2020-6-26,1

我们需要将这100万条插入如下表中

CREATE TABLE `tb_user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(50) NOT NULL,
  `password` VARCHAR(50) NOT NULL,
  `name` VARCHAR(20) NOT NULL,
  `birthday` DATE DEFAULT NULL,
  `sex` CHAR(1) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_user_username` (`username`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 ;

实现

  1. 客户端连接服务端时,加上参数 --local-infile
mysql --local-infile -u root -p
  1. 设置全局参数local_infile为1,开启从本地加载文件导入数据的开关
set global local_infile = 1;

可以通过 select @@local_infile; 查看开关是否开启,为0没开启,为1开启

  1. 切换到自己的数据库下,并根据上面的建表语句创建 tb_user 数据表

  2. 执行load指令将准备好的数据,加载到表结构中,这里要100w_data.sql数据样本放到 /root 目录下

load data local infile '/root/100w_data.sql' into table tb_user fields terminated by ',' lines terminated by '\n' ;

解释上面的sql语句 – 先指定文件所在位置 ‘/root/100w_data.sql’ ,再指定要插入的数据表 tb_user ,fields terminated by ',' 是指每个字段之间根据 逗号 进行分隔,lines terminated by ‘\n’ 表示每行数据根据 换行 进行分隔,这要根据具体的数据样本格式各改变

结果

在这里插入图片描述
看到成功插入100万条数据,而且耗时 13.10 秒,如果 使用批量 insert ,耗时需要达到 10 分钟

因此如果是大批量数据插入,需要使用 load 而不是 insert

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值