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

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

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

    使用数据库
    use 数据库名;

    开启事务
    START TRANSACTION;

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

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