V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
userlijinhong
V2EX  ›  MySQL

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

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

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

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

    使用数据库
    use 数据库名;

    开启事务
    START TRANSACTION;

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

    成功后事务提交
    COMMIT;
    MurphyL0
        18
    MurphyL0   62 天前 via Android
    load data infile...
    lTsuKi
        19
    lTsuKi   62 天前 via Android
    @zhongjun96 用 load data infile 大概几十分钟就导入完了,不过索引建了 2 个多小时,最后 3 小时 20 分钟完成,数据 22G,可秒查了
    Cll66
        20
    Cll66   62 天前   ❤️ 2
    微博裤子?
    towser
        21
    towser   62 天前
    泄漏的电话?
    userlijinhong
        22
    userlijinhong   62 天前
    @mrhhsg 我说的超大是文件大小,不知道这样说是否合理,或者说你们对超大有什么其他的见解 (我竟然不知道怎么在这上面发表情)
    userlijinhong
        23
    userlijinhong   62 天前
    @des csv
    userlijinhong
        24
    userlijinhong   62 天前
    navicat 是可以导入,但是考虑到网络 IO 的问题,可能会比较慢;然后数据文件还是在服务器上的,本地文件的读取就不用考虑数据路由,网络带宽等因素了
    aice755169
        25
    aice755169   62 天前
    什么格式没说,不同格式 效率差很多的
    userlijinhong
        26
    userlijinhong   62 天前
    @funbox 对于这种手动提交事务的话,我觉得还是把文件划分为小文件了再导入,万一数据出错,又要重新来
    userlijinhong
        27
    userlijinhong   62 天前
    @lTsuKi 我等哈去试一哈
    userlijinhong
        28
    userlijinhong   62 天前
    @aice755169 是我大意了,格式的话是 cvs
    ruzztok
        29
    ruzztok   62 天前   ❤️ 1
    我还以为你要导入一部电影到数据库中
    userlijinhong
        30
    userlijinhong   62 天前
    @KouShuiYu 我开始看半天嗯是没看懂这个红薯...不过我没那么多的红薯资料
    Hodor
        31
    Hodor   62 天前
    文件发我,我帮你测试一下啊,哈哈哈
    userlijinhong
        32
    userlijinhong   62 天前
    @Hodor 这就不劳烦兄弟,我觉得我能行,哈哈嗝
    Donss
        33
    Donss   62 天前
    datax?
    lixintcwdsg
        34
    lixintcwdsg   62 天前
    不管如何,一定要用 load data,其余效率和 load data 都差好远
    然后文件要分割一下
    lyy16384
        35
    lyy16384   62 天前
    我觉得直接写程序插入就行,多线程,一次 insert 多行,批量提交事务,直接拼 sql 不要用参数化,程序和数据库放一台机器上,其他访问数据库的服务都先下线
    以前用这种方式迁移过两亿条数据,而且是一边读 db 一边处理逻辑一边写 db,只要半小时左右
    dorothyREN
        36
    dorothyREN   62 天前
    20G 真不算大
    Shuiss
        37
    Shuiss   62 天前
    @wangkun025 红薯是什么?
    wangkun025
        38
    wangkun025   62 天前
    @Shuiss 随口一说而已。别当真。抱歉带来困扰。
    毕竟楼主说大文件,我也不知道是什么啊。后来楼主说是 csv 。
    万一是 sql 呢,万一是 Excel 呢,万一是蓝光高清电影呢,万一是照片呢。
    开始楼主没说啊。就这。
    lostberryzz
        39
    lostberryzz   61 天前   ❤️ 1
    44.65G 神秘文件哈哈哈
    KIzuN1
        40
    KIzuN1   61 天前
    @lostberryzz 制种者为啥把 WB 弄了两份捏
    laminux29
        41
    laminux29   61 天前
    分批导入并校验 + 实时监控各设备负载并不断解决瓶颈
    lostberryzz
        42
    lostberryzz   61 天前
    @KIzuN1 可能是操作失误,两个文件没有区别
    en20
        43
    en20   61 天前 via iPhone
    看不懂各位谜语人,什么红薯 8e,谁能明示一下??
    zhongjun96
        44
    zhongjun96   61 天前
    @en20 #43 红薯 39L 解释了,8e 就是 qq 数据
    kios
        45
    kios   61 天前
    感觉你重新定义了超大这个词汇,哈哈哈哈
    funbox
        46
    funbox   61 天前
    @userlijinhong 这个还好 首先你要吧 sql 文件上传到服务器上 这样的话建立索引的时间会大大缩短 导入会加速的
    toomlo
        47
    toomlo   61 天前
    你要是没机器,就去各种云创建个按量付费的,在 docker 里面搞好镜像在上传
    userlijinhong
        48
    userlijinhong   59 天前
    @kios 看来我还是个没长个见识的小白,哈哈哈嗝
    csx163
        49
    csx163   58 天前
    为什么没人提 mysqlsh
    Ayersneo
        50
    Ayersneo   51 天前
    我就是这么干的 我是新手效率很低 用 pandas 分了 10 几个小文件后 load data infile 但是还是动不动就报错啥严格模式,啥满了 bulabula😖
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3612 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:49 · PVG 18:49 · LAX 02:49 · JFK 05:49
    ♥ Do have faith in what you're doing.