mysql sql大文件导入正确姿势

 更新时间:2025年02月18日 13:00:07   投稿:mdxy-dxy  
在 MySQL 中导入大文件时,mysql source 导入大文件速度太慢,可能会遇到性能问题或内存限制,以下是一些优化导入大文件的建议,需要的朋友可以参考一下

在 MySQL 中导入大文件时,mysql source 导入大文件速度太慢,可能会遇到性能问题或内存限制。以下是一些优化导入大文件的建议,需要的朋友可以参考一下

1. 使用 LOAD DATA INFILE

LOAD DATA INFILE 是 MySQL 提供的快速导入数据的方式,比逐条 INSERT 语句快得多。

LOAD DATA INFILE '/path/to/your/file.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS; -- 如果有标题行,可以忽略

2. 调整 MySQL 配置

如果文件非常大,可能需要调整 MySQL 的配置参数:

  • max_allowed_packet: 增加允许的最大数据包大小。
  • innodb_buffer_pool_size: 增加 InnoDB 缓冲池的大小,以提高性能。
  • bulk_insert_buffer_size: 增加批量插入缓冲区的大小。
SET GLOBAL max_allowed_packet = 1G;
SET GLOBAL innodb_buffer_pool_size = 2G;
SET GLOBAL bulk_insert_buffer_size = 256M;

3. 分批导入

如果文件过大,可以将其拆分为多个小文件,分批导入。

4. 禁用索引和外键检查

在导入数据时,禁用索引和外键检查可以显著提高性能。

ALTER TABLE your_table DISABLE KEYS;
SET FOREIGN_KEY_CHECKS = 0;

-- 导入数据

ALTER TABLE your_table ENABLE KEYS;
SET FOREIGN_KEY_CHECKS = 1;

5. 使用命令行工具

可以使用 mysql 命令行工具导入数据:

mysql -u username -p database_name < /path/to/your/file.sql

6. 使用 mysqldump 和 mysqlimport

对于大型 SQL 文件,可以使用 mysqldump 导出数据,再使用 mysqlimport 导入。

mysqldump -u username -p database_name > backup.sql
mysql -u username -p database_name < backup.sql

7. 使用第三方工具

有一些第三方工具可以帮助导入大文件,如 pt-archiver 或 mydumper/myloader

8. 优化表结构

确保表结构合理,避免不必要的索引和约束,以提高导入速度。

9. 使用事务

将多个 INSERT 语句放在一个事务中,可以减少提交次数,提高性能。

START TRANSACTION;

INSERT INTO your_table VALUES (...);
INSERT INTO your_table VALUES (...);
-- 更多 INSERT 语句

COMMIT;

10. 监控和调整

在导入过程中,监控系统资源使用情况(如 CPU、内存、磁盘 I/O),并根据需要调整配置。

通过这些方法,可以有效地导入大文件到 MySQL 数据库中。

11.解决方案

  • 关闭二进制日志和事务自动提交
  • 手动开启事务,导入数据
  • 提交事务
  • 重新开启二进制日志和事务自动提交
set sql_log_bin=off;
set autocommit=0;
start transaction;
source 文件.sql;
commit;
set sql_log_bin=on;
set autocommit=1;

到此这篇关于mysql sql大文件导入正确姿势的文章就介绍到这了,更多相关mysql 大文件导入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQl数据库必知必会sql语句(加强版)

    MySQl数据库必知必会sql语句(加强版)

    本文给大家分享了一篇关于mysql数据库必会sql语句加强版内容,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-04-04
  • 正确使用MySQL INSERT INTO语句

    正确使用MySQL INSERT INTO语句

    MySQL数据库是一种小型关系型数据库管理系统,MySQL数据库的优化是MySQL数据库操作过程中非常重要的工作,MySQL数据库的优化能够实现MySQL数据库操作的简便。
    2015-08-08
  • MySQL实现统计过去12个月每个月的数据信息

    MySQL实现统计过去12个月每个月的数据信息

    这篇文章主要介绍了MySQL实现统计过去12个月每个月的数据信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • MySQL关闭SSL的简单方法

    MySQL关闭SSL的简单方法

    这篇文章主要介绍了MySQL关闭SSL的简单方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • MySQL索引使用说明(单列索引和多列索引)

    MySQL索引使用说明(单列索引和多列索引)

    这篇文章主要讨论MySQL选择索引时单列单列索引和多列索引使用,以及多列索引的最左前缀原则,需要的朋友可以参考下
    2018-01-01
  • MYSQL数据表损坏的原因分析和修复方法小结(推荐)

    MYSQL数据表损坏的原因分析和修复方法小结(推荐)

    MYSQL数据表损坏的原因分析和修复方法小结,碰到的朋友可以参考,下面整理一些比较全,希望对大家有所帮助。
    2011-01-01
  • mysql分表程序改动方法

    mysql分表程序改动方法

    在本篇文章里小编给大家分享了关于mysql分表程序改动方法以及相关知识点,需要的朋友们跟着学习下。
    2019-04-04
  • mysql 索引的基础操作汇总(四)

    mysql 索引的基础操作汇总(四)

    这篇文章主要为大家详细介绍了mysql 索引的基础操作汇总,涵盖了创建和查看索引、删除索引等操作,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • MySQL curdate()函数的实例详解

    MySQL curdate()函数的实例详解

    这篇文章主要介绍了MySQL curdate()函数的实例详解的相关资料,希望通过本文能帮助到大家理解应用MysqL curdate()的使用方法,需要的朋友可以参考下
    2017-09-09
  • centos7环境下源码安装mysql5.7.16的方法详解

    centos7环境下源码安装mysql5.7.16的方法详解

    这篇文章主要介绍了centos7环境下源码安装mysql5.7.16的方法,详细分析了centos7环境下MySQL安装的相关步骤、操作命令、配置方法与注意事项,需要的朋友可以参考下
    2020-02-02

最新评论