Navicat中文网站 > 常见问题 > Navicat怎么导入SQL文件 Navicat导入SQL文件后中文乱码如何解决
Navicat 帮助中心 帮助类别

Navicat怎么导入SQL文件 Navicat导入SQL文件后中文乱码如何解决

发布时间: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文件后中文乱码如何解决”看着是一个导入问题,实际和文件、连接、数据库三层字符集都有关系。中文数据能否正常保存,取决于这几处是否使用了相互兼容的编码。导入前先拿少量数据试一遍,保留原文件和日志,后面遇到乱码或执行中断,也不会一下子陷入反复重导的状态。

展开阅读全文

标签:Navicat写sql语句sql语句导入sql文件

读者也访问过这里:
Copyright © 2026 Navicat数据库管理软件
- 苏州苏杰思网络有限公司
|
软件使用须知 |
证照信息 |
特聘法律顾问:江苏政纬律师事务所 宋红波

咨询热线

在线咨询

限时折扣