发布时间:2026-07-30 15: 05: 00
SQL文件执行到100%,点开数据表却看到一排“???”,这种情况确实挺折腾。表结构已经建好,记录也写进去了,可中文全坏了,再改字符集往往也恢复不了。
处理“Navicat怎么导入SQL文件Navicat导入SQL文件后中文乱码如何解决”,要把SQL文件编码、Navicat连接编码和数据库字符集放在一起看。少检查一处,重新导入后仍可能乱码。
一、Navicat怎么导入SQL文件
Navicat导入.sql文件时,不用走Excel、CSV那套【导入向导】。官方给出的入口是打开连接、数据库或模式,右键选择【运行SQL文件】。
1、导入前先看SQL文件内容
别拿到文件就直接运行,先用文本编辑器打开看几眼。
①检查中文注释和中文数据是否正常显示。
②查看文件中有没有CREATE DATABASE和USE语句。
③确认目标数据库名称没有写错。
④记下文件使用的是UTF-8、GBK还是其他编码。
有些SQL文件会自己创建数据库,有些只包含建表和插入语句。后一种如果选错目标库,文件照样能执行,只是表跑到了别的地方。
2、在Navicat中运行SQL文件
①打开Navicat,连接目标服务器。
②右击对应的连接或数据库。
③选择【运行SQL文件】。
④选中需要导入的.sql文件。
⑤将【编码】设为文件实际编码。
⑥点击【开始】执行。
文件是UTF-8,就不要凭感觉选GBK。中文在读取SQL文件时已经被错误解释,后面的数据库设置再正确也没用。
第一次运行也不建议勾选【发生错误时继续】。这个选项会绕过报错语句,最后看着像是执行完成,实际上可能少表、少字段或少了一部分记录。
3、执行完成后别急着关窗口
进度条走完,只能说明执行过程结束,不代表每条语句都成功。
①查看执行日志中的错误信息。
②刷新目标数据库。
③核对表的数量和名称。
④打开一张含中文的数据表。
⑤抽查记录数、字段内容和时间数据。
SQL文件中包含多条语句时,Navicat支持用分号分隔后连续执行。只要中间有语句报错,后续结果就可能和预期不同,所以日志不能不看。
二、Navicat导入SQL文件后中文乱码如何解决
中文乱码的表现不完全一样。显示为“???”,通常说明中文写入时已经丢失;显示成“䏿–‡”这类字符,则更像是同一段字节被按错误编码读取。
先判断乱码出现在哪一步,别上来就改表字符集。
1、检查SQL文件本身有没有乱码
①用文本编辑器重新打开SQL文件。
②找到一条包含中文的INSERT语句。
③切换UTF-8、GBK等编码查看。
④找到中文能够正常显示的编码。
⑤回到Navicat,按相同编码重新运行文件。
如果文本编辑器里看到的已经是乱码,问题不在Navicat显示界面。需要找到原始文件,或者确认导出时到底用了哪种编码。
2、检查Navicat连接编码
SQL文件显示正常,导入后才乱码,可以检查当前连接。
①右击连接,选择【编辑连接】。
②打开【高级】页面。
③找到【编码】选项。
④选择与数据库环境相符的编码。
⑤保存后断开连接,再重新连接。
Navicat官方对MySQL和MariaDB的建议也是在【编辑连接】→【高级】中选择正确编码。改完后重新建立会话更稳,不要沿用旧连接直接再试。
3、检查MySQL当前会话字符集
以MySQL、MariaDB为例,可以在查询窗口运行:
重点看character_set_client、character_set_connection和character_set_results。它们分别涉及客户端语句、连接转换以及查询结果返回时使用的字符集。
当前会话需要统一为UTF-8时,可以运行:
SET NAMES会同时设置客户端、连接和结果字符集。它对当前会话有用,但不是修复旧乱码的万能办法,重新连接后的配置仍要看Navicat和服务器设置。
4、已经变成问号的数据怎么处理
数据库里已经保存成???,原来的中文信息通常已经丢了。此时把表改成utf8mb4,问号也不会自己变回汉字。
比较稳的做法是保留原SQL文件,统一文件编码、连接编码和目标库字符集,然后删除错误数据重新导入。
别直接在正式库里反复试。先新建一个测试库,挑一张小表跑通,再处理完整文件。这样出了问题也好收场。
三、导入前怎样减少乱码和返工
乱码处理起来麻烦,导入前多看两分钟,往往能省下后面一大段折腾。
1、让文件和数据库使用同一套编码
①导出SQL时记录文件编码。
②建库、建表时统一字符集。
③Navicat运行文件时选择相同编码。
④先测试少量中文数据。
⑤确认正常后再导入完整文件。
SQL文件中如果带有建库或建表语句,还要看看是否写了DEFAULT CHARACTER SET。数据库默认是utf8mb4,某张表却单独指定成其他字符集,中文仍可能出问题。
2、大文件先做小范围测试
几百MB甚至更大的SQL文件,跑完才发现中文乱码,重新处理会很耗时间。
可以复制建表语句和几条带中文的INSERT语句,单独保存成测试文件。小文件正常,再跑完整版,心里会踏实很多。
3、保留原文件和执行日志
原SQL文件不要在导入后马上删除。执行日志也可以保存下来,后面遇到记录缺失、字符异常或语句不兼容,至少还有地方可查。
数据库导入成功只是结果,原文件和日志才是出问题时的退路。
总结
“Navicat怎么导入SQL文件Navicat导入SQL文件后中文乱码如何解决”看着是一个导入问题,实际和文件、连接、数据库三层字符集都有关系。中文数据能否正常保存,取决于这几处是否使用了相互兼容的编码。导入前先拿少量数据试一遍,保留原文件和日志,后面遇到乱码或执行中断,也不会一下子陷入反复重导的状态。
展开阅读全文
︾