mysql如何导入数据库:优先用命令行导入适配绝大多数本地及服务器场景

mysql如何导入数据库:优先用命令行导入适配绝大多数本地及服务器场景

之前帮项目迁移数据的时候,卡在mysql如何导入数据库这个操作上,图形工具频频出问题,折腾大半天,最后摸透了命令行的实操逻辑,适配各种版本的MySQL数据库,兼容性远比可视化工具稳定。

一开始图省事,直接用Navicat的导入功能,选中本地的sql文件,无脑点击导入按钮。等待进度条走完后,打开数据库查看,发现数据表是空的,部分存储过程和索引完全没有导入成功,数据库大小也和原文件差距极大。反复重试三次,结果一模一样,界面没有报错提示,就是数据残缺不全。

后来盯着命令行界面发呆,突然反应过来,可视化工具会自动过滤部分特殊语句,尤其是带批量插入、外键约束、触发器的sql文件,很容易出现导入遗漏,这也是图形工具导入失败的核心原因。

切换到电脑cmd窗口操作,先确认MySQL环境变量配置正常,不用进入MySQL内部界面,直接在系统命令行执行导入语句。先定位到sql文件的本地路径,我当时把备份的数据库文件放在了D盘根目录,路径简单无中文、无空格,这是很多人容易忽略的点,带中文和空格的路径,百分百会导入报错。

输入基础导入命令,格式是mysql -u用户名 -p 目标数据库名 < 文件路径.sql。敲完回车后,输入数据库登录密码,没有多余操作,静静等待执行结束。整个过程没有任何弹窗,命令行持续滚动执行日志,能清晰看到每一张数据表、每一条数据的导入进度。

中途遇到一次报错,提示数据库不存在。才想起导入前必须手动创建好空的目标数据库,而且字符集、排序规则必须和原数据库保持一致,我当时漏掉了这一步,直接执行导入,自然无法运行。立刻登录MySQL,执行create database 库名 default character set utf8mb4 collate utf8mb4_unicode_ci; 创建对应数据库,保证编码完全匹配,避免后续出现乱码问题。

解决完数据库创建的问题后,再次执行导入命令,这次流程全程顺畅。几十兆的sql文件,不到一分钟就执行完毕,命令行自动回到初始输入界面。

不用任何工具校验,直接在MySQL中查询数据表,所有数据、索引、触发器、函数全部完整导入,没有缺失、没有乱码,和原数据库数据完全一致。

后面试过几次不同大小的数据库文件,小文件、超大备份文件,用这套命令行方式都能稳定导入。反观可视化工具,时不时会出现截断、缺失、导入卡死的情况,适配性差了很多。

还有个很实用的细节,导入过程中如果出现语句错误,命令行会直接提示具体报错行数和问题语句,能精准定位问题,不用盲目排查。

最后一次实操收尾,导入完成后,在命令行输入show tables;逐行核对库内数据表数量,确认全部数据导入到位。

了解更多百科知识请访问 百科