Mysql中快速导入数据
公司要求为产品做一个离线升级工具,代理商可以下载后直接双击这个exe对当前版本进行升级。工具的其中一个功能是升级前备份用户的数据,升级失败还原数据。之前代码中一直使用的是mysqldump.exe来备份,对小数据量的情况还是稳定的,
"..\mysqldump.exe" string.Format(" -h{0} -P{1} -u{2} -p{3} -q -R {4} > {5}" , conn.Server, conn.Port, conn.UserID, conn.Password, conn.Database , directoryPath + string.Format(@"\{0}.sql", conn.Database))
还原用的mysql.exe执行
"..\mysql.exe" string.Format("DROP DATABASE {0};CREATE DATABASE /*!32312 IF NOT EXISTS*/`{0}` /*!40100 DEFAULT CHARACTER SET utf8 */;", conn.Database); string.Format(" -h{0} -P{1} -u{2} -p{3} --default-character-set=utf8 {4} < {5}" ,conn.Server,conn.Port,conn.UserID,conn.Password,conn.Database,backupFile)
1 | 整个DB71万条数据,数据+索引的大小是474M(大量使用了GUID主键).导出耗时约40秒,导入耗时约两分钟。 |
1 | 机子配置 |
1 | <a href= "//images0.cnblogs.com/blog/442694/201412/041911263429503.png" rel= "noopener nofollow" ><img style= "background-image: none; padding-left: 0; padding-right: 0; display: inline; padding-top: 0; border: 0" title= "image" src= "//images0.cnblogs.com/blog/442694/201412/041911276707531.png" alt= "image" width= "387" height= "143" border= "0" ></a> |
1 | 由于有客户反映还原数据库耗时长,这边尝试针对历史表进行还原的优化 |
导出order_dish_history文件,总共26万条数据。
-hlocalhost -P3306 -uuserId -ppwd -q -R databaseName order_dish_history --fields-terminated-by='Z' --tab="F:\Test\database"
使用mysqlimport来导入打数据量的历史表(这种方式要注意的是文件的路径必须相对于mysql数据文件的路径,导入的表是文件名)
-hlocalhost -P3306 -uroot --replace databaseName rmsdb\\order_dish_history.txt
26万条数据,耗时30秒
使用Load data infile的方式
LOAD DATA INFILE 'F:\\Test\\rmsdb\\order_dish_history.txt' INTO TABLE order_dish_history FIELDS TERMINATED BY '\Z'
耗时跟mysqlimport差不多
现代足球中场兼进球,兼防守扫荡。软件开发也要求产品意识,质量测试。
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET MAUI项目中绑定Android库实现硬件控制的开发经历
· 糊涂啊!这个需求居然没想到用时间轮来解决
· 浅谈为什么我讨厌分布式事务
· 在 .NET 中使用内存映射文件构建高性能的进程间通信队列
· 一个 java 空指针异常的解决过程
· 干翻 Typora!MilkUp:完全免费的桌面端 Markdown 编辑器!
· 那些年我们一起追过的Java技术,现在真的别再追了!
· 记一次.NET MAUI项目中绑定Android库实现硬件控制的开发经历
· 从WebApi迁移到Minimal API?有了这个神器,小白也能10分钟搞定!
· 抛开官方库,手撸一个轻量级 MCP 服务端