【mysql】如何在MySQL中导入超大的SQL文件?

本文介绍如何通过修改my.ini文件中的max_allowed_packet参数,并使用source命令,快速将大型SQL文件导入到MySQL数据库中,避免因文件过大导致的导入失败。

方法
1.在navicat中导入(速度慢) 
2.使用source命令导入(速度快) 
第一种很简单,本文只介绍第二种。

步骤

1.修改该目录下my.ini文件中max_allowed_packet 
因为默认max_allowed_packet为1k,如果导入的文件过大。可能会报错。 
我们将该值改大一点,我这里设为1G。 
 
设置好了之后可以通过以下命令来查看:show VARIABLES like '%max_allowed_packet%';注意别忘了写分号。

2.重启mysql服务 


3.重新登录mysql并执行source

C:\Users\111>mysql -u root -p

mysql>use mydb;
mysql>set names utf8;#根据情况,要保证编码一致
mysql>source D:/dataFile/back.sql;#注意这是左斜杠


我导入11G的数据大概用了半个多小时。

4.去navicat中查看是否成功导入了

在命令行中导入超大 SQL 文件,可参考以下通用步骤和方法: ### 准备工作 在导入之前,确保 MySQL 服务正在运行,并且有足够的系统资源来处理大文件。同时,要确认 SQL 文件的编码格式,避免出现乱码问题。 ### 导入步骤 1. **登录 MySQL**:使用 `mysql -uroot -p` 命令登录 MySQL,之后输入密码。 2. **创建数据库(如果需要)**:若要将 SQL 文件导入到新的数据库中,可使用 `CREATE DATABASE 数据库名称 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;` 语句创建数据库,然后使用 `use 数据库名称` 语句切换到该数据库 [^2]。 3. **配置参数**:为了确保能够顺利导入文件,需要调整一些 MySQL 的配置参数。可以通过修改 MySQL 配置文件(通常是 `my.cnf` 或 `my.ini`)来实现。主要调整的参数如下: - `max_allowed_packet`:该参数决定了 MySQL 服务器接收数据包的最大大小。将其设置为足够大的值,例如: ```plaintext max_allowed_packet = 1024M ``` - `net_buffer_length`:网络缓冲区的大小,也可以适当增大: ```plaintext net_buffer_length = 16M ``` 修改完配置文件后,需要重启 MySQL 服务使配置生效。 4. **导入 SQL 文件**:使用 `source` 命令导入 SQL 文件,注意要使用文件的绝对路径,例如: ```sql source /home/xx/large_file.sql; ``` ### 注意事项 - **使用绝对路径**:在使用 `source` 命令时,务必使用 SQL 文件的绝对路径,避免因相对路径问题导致文件找不到。 - **监控导入过程**:由于是超大文件导入过程可能会比较耗时。可以通过查看 MySQL 的日志文件或使用 `SHOW PROCESSLIST;` 命令来监控导入进度。 - **错误处理**:如果在导入过程中出现错误,要仔细查看错误信息,根据错误提示进行相应的处理。可能的错误包括语法错误、数据类型不匹配等。 ### 优化建议 - **分批次导入**:如果 SQL 文件非常大,可以将其分割成多个小文件,然后依次导入。可以使用文本编辑工具或脚本(如 `split` 命令)来分割文件。 - **关闭自动提交**:在导入前使用 `SET autocommit = 0;` 命令关闭自动提交,导入完成后再使用 `COMMIT;` 命令手动提交事务,这样可以提高导入效率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值