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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求

现在有一个 数据量 为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

### PyCharm 打开文件显示全的解决方案 当遇到PyCharm打开文件显示全的情况时,可以尝试以下几种方法来解决问题。 #### 方法一:清理缓存并重启IDE 有时IDE内部缓存可能导致文件加载异常。通过清除缓存再启动程序能够有效改善此状况。具体操作路径为`File -> Invalidate Caches / Restart...`,之后按照提示完成相应动作即可[^1]。 #### 方法二:调整编辑器字体设置 如果是因为字体原因造成的内容显示问题,则可以通过修改编辑区内的文字样式来进行修复。进入`Settings/Preferences | Editor | Font`选项卡内更改合适的字号大小以及启用抗锯齿功能等参数配置[^2]。 #### 方法三:检查项目结构配置 对于某些特定场景下的源码视图缺失现象,可能是由于当前工作空间未能正确识别全部模块所引起。此时应该核查Project Structure的Content Roots设定项是否涵盖了整个工程根目录;必要时可手动添加遗漏部分,并保存变更生效[^3]。 ```python # 示例代码用于展示如何获取当前项目的根路径,在实际应用中可根据需求调用该函数辅助排查问题 import os def get_project_root(): current_file = os.path.abspath(__file__) project_dir = os.path.dirname(current_file) while not os.path.exists(os.path.join(project_dir, '.idea')): parent_dir = os.path.dirname(project_dir) if parent_dir == project_dir: break project_dir = parent_dir return project_dir print(f"Current Project Root Directory is {get_project_root()}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值