向MySQL数据库中批量导入SQL文件的方法

哎呀,和大家讲MySQL中的这个批量导入的事情,我真是陷入了很大的麻烦。
你的总结已经很全面了,我来补充一下你的个人经历。

去年我在上海做一个项目。
sql 文件只有 5 0MB。
我只是使用 mysql -uroot -pmydb < data>很简单,但有时你会忘记-u,直接进入mysql mydb < data>原来是root用户带起来的,花了很长时间才发放许可证。
因此,即使文件很大,也要添加用户并养成习惯。

然后发生了一些事情。
广东服务器上有一个1 .2 GB的sql文件。
使用mysql -uroot -p... < file>然后我就急得满头大汗,根本就没有想过恢复系统。
后来学了智慧,用了开头的命令,先mysql -uroot -p 使用 mydb; 源/path/to/inge_file.sql; 看着慢慢的进展,我的心情平静了一些。
但请注意,文件名必须是MySQL可以识别的绝对路径。
我曾经使用相对路径,在客户端执行了source ./file.sql,但是没有找到,我的努力白费了。
另一个陷阱是数据迁移。
CSV文件有5 00MB,表结构也非常复杂。
一开始我想用单词逐个相加,但到了半夜,总数只剩下1 0%了。
后来我改为WEIGHT DATA INFILE,区分逗号分隔符字段和周围的文本字符为双逗号。
嘿嘿,速度快得肉眼都能看到!几分钟后就完成了。
前提是该文件必须是MySQL服务器本地的,或者必须打开LOCAL_INFILE,必须添加到my.cnf中。
有朋友忘记改了,导入半天就报错说找不到文件。
真的很神奇。

令人惊讶的是,有一次,我们进入了自动导入和脚本化Python批量导入。
5 GB存储,分为5 000条记录批次。
这个金手指非常好,可以避免内存溢出,还可以直接添加日志来放置错误的导入。
但那个洞。
事务提交过于频繁地影响结果。
我必须做更大的一批。
还有一次,网络发送完毕,连接断开,就得加上重试机制,这比手动发信更复杂。

看这里:
对于小文件(1 00MB以下),只需使用命令行即可,速度很快。

对于大文件(GB级别),使用源,观察进度并休息。

数据结构化CSV等,WEIGHT DATA INFILE,无敌。

自动化和控制,使用脚本进行批处理,但考虑事务和重试。

哦对了,在做这些操作之前你需要重写数据库!我有一个同事,发现总数据有错,所以直接把生产库删除了。
这是一场悲剧。
此外,通过检查并在导入后重新启用外键来暂时禁用外键可以节省大量时间。
SETforeign_key_checks=0;,导入时,SETforeign_key_checks=1 ;,这个要记住。

剩下的很重要。
使用 show PROCESSLIST 查看是否有重要的内容被卡住,并使用 top 查看 CPU 和内存。
我有一台服务器因为CPU任务满了而被挂起,而我没有及时找到它。

简而言之,没有什么硬性且快速的方法可以做到这一点。
你对事情本身有选择权。
有时需要将它们结合起来,例如先使用将大文件拆分成小文件,然后使用命令行并行导入多个小文件,这样可以提高效率。

mysql数据库怎么导入数据库文件

直接导入MySQL数据库只需以下步骤:
先连接MySQL服务器 命令行: mysql -u用户名 -p 输入您的密码
创建新数据库 命令:CREATE DATABASE 数据库名; 选择自己的名字
导入数据有两种方式 1 .直接命令行导入 mysql -u用户名 -p 数据库名 <文件名.sql
2 .使用source命令导入 首先使用USE数据库名; 再次输入 SOURCE file path.sql
检查导入是否正确。
类型:USE 数据库名; 再次输入:SHOW TABLE; 检查手表看看是否每个人都在这里
注意: 该文件必须采用 .sql 格式 编码采用UTF-8 无乱码 导入大文件前调整max_allowed_packet参数
出现问题怎么办? 权限错误?查看文件和用户权限 语法错误?文件可能已损坏,请尝试将其分成几个部分 导入中断?我发现有问题,修复它并继续
先在测试环境中尝试一下,再做一次之前不要担心

mysql如何导入sql文件

MySQL 导入 SQL 文件。
最好使用MySQL客户端,检查权限,连接数据库,运行source命令导入。
如果文件太大,修改max_allowed_pa​​cket。
不要使用 mysqlimport 导入通用 SQL 脚本。