mysql 如何导入 20g 的超大文件

2020-11-24 09:44:44 +08:00
 userlijinhong
最近对 mysql 如何导入超大文件比较感兴趣。我看网上的教程方法乱七八糟,什么 navicat 导入都说出来了,我目前的思路是先将文本划分为小文本,然后再导入。不知道有没有更好的办法,求教!
8820 次点击
所在节点    MySQL
51 条回复
mrhhsg
2020-11-24 10:10:51 +08:00
楼主是不是对“超大”有什么误解?
Citrullus
2020-11-24 10:12:36 +08:00
你这是 8 亿数据的吧😏
des
2020-11-24 10:14:16 +08:00
不说说是什么文件? csv ? sql ?还是 log ?
wangkun025
2020-11-24 10:15:46 +08:00
不说什么数据,一律按照🍠处理。
dzdh
2020-11-24 10:20:26 +08:00
不管多大直接 `mysql -Ux -px -hx < source.sql`
rabbirbot00
2020-11-24 10:24:00 +08:00
navicat 可以导入啊,csv 起码是可以的,txt 没有试过,设置好分隔符应该和 csv 一样的吧
liprais
2020-11-24 10:25:38 +08:00
load infile
KouShuiYu
2020-11-24 10:51:47 +08:00
@wangkun025 红薯?
wangkun025
2020-11-24 11:02:33 +08:00
@KouShuiYu 嗯嗯。
lTsuKi
2020-11-24 11:06:39 +08:00
MySQL 直接用 load data infile 呀
如果是 8e 数据那有一行有点问题,建议清理了再导入🌚👌🏻
zhongjun96
2020-11-24 11:43:35 +08:00
@lTsuKi #10 导入一小时了,才导入 2e,有啥快速导入的方法吗?或者有啥直接查找的方法 ?用 cat 等半天,less 也是半天
beryl
2020-11-24 11:47:59 +08:00
直接 load data infile 问题不大,但是可能需要考虑导入过程中间出现问题怎么办,例如连接断了,某一行数据异常,针对这种情况,可以先将文件切分为几个,避免异常后,重新处理的成本
samzong
2020-11-24 11:59:55 +08:00
最多导入的时候用了 50 分钟,还原一个 db,对心态的极其考验
Hconk
2020-11-24 12:38:02 +08:00
@zhongjun96 rg 直接搜
wzq001
2020-11-24 12:49:52 +08:00
插个眼~!
dog82
2020-11-24 13:27:40 +08:00
要说清楚 20G 是啥
funbox
2020-11-24 13:53:34 +08:00
进入 mysql
mysql -u root -p

创建数据库
CREATE DATABASE 数据库名;

设置参数
set sql_log_bin=OFF;//关闭日志
set autocommit=0;//关闭 autocommit 自动提交模式

使用数据库
use 数据库名;

开启事务
START TRANSACTION;

引入 SQL 文件
source 文件的路径;

成功后事务提交
COMMIT;
MurphyL0
2020-11-24 13:58:57 +08:00
load data infile...
lTsuKi
2020-11-24 14:29:10 +08:00
@zhongjun96 用 load data infile 大概几十分钟就导入完了,不过索引建了 2 个多小时,最后 3 小时 20 分钟完成,数据 22G,可秒查了
Cll66
2020-11-24 14:32:55 +08:00
微博裤子?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/728583

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX