发布时间:2026-06-02 14: 14: 00
数据库初始化、表结构调整或者批量往里写数据的时候,免不了要用到 SQL 脚本,于是很多人会问,在 Navicat 里头怎么去跑这些 SQL 脚本,跑完以后又该从哪儿把执行记录翻出来看,要解决这两个问题,动手前就最好先确认三样东西:连的是哪台服务器、脚本要对准哪个库,以及脚本文件本身是什么编码,完了还要去翻翻执行日志,光看到文件顺顺利利打开了,不代表它就一定执行在了正确的那一个库里;跑完之后如果只瞄一眼那个成功的提示,其实也还不太够稳妥。
一、Navicat 怎么运行 SQL 脚本
Navicat 允许直接执行本地的 SQL 文件,但在做这件事情之前,先把数据库给备份一下,这算是个保险动作,尤其当脚本里面带着删表、清空数据、修改字段或者批量更新这类语句时,更不要一上来就往正式环境里头去试跑。
1、选中目标数据库
我们先打开 Navicat,在左边连接列表里面把服务器展开,找到那个准备拿来跑脚本的数据库或者 Schema;之后用鼠标右键去点这个目标对象,在弹出的菜单里面挑那个写着【Execute SQL File】的选项,Navicat 本来就是支持在连接、数据库或者 Schema 这一层直接去把 SQL 文件执行起来的。
2、选择 SQL 脚本
接着会弹出一个窗口,在里头点那个选文件的按钮,把要用的 .sql 文件载入进来,载入的时候,顺带要检查一下文件路径、字符编码还有目标数据库都对不对头;如果脚本里有中文字段或者数据,编码没对上经常就跑出乱码来,而从别的环境导出来的脚本,还得额外去留心数据库的名字和表的前缀是不是一致。
3、确认执行参数
有些脚本里面塞了不止一条语句,这些语句之间一般都是用分号隔开的,Navicat 本身也支持一口气跑好多条 SQL,所以这里倒不用担心;不过要是脚本涉及的数据量特别大,一个更稳妥的做法是先把它丢到测试库里跑一遍,确认没有被卡住,再搬到正式环境上去跑。
4、查看执行结果
等到点了【Start】或者执行按钮以后,就要盯着窗口里头的进度和返回的提示来看,万一有红色的报错跳出来,先别连着重复去点执行,而是要把出错的位置、那行错误码,还有挨着的几行 SQL 赶紧记下来;因为有些脚本可能前面已经顺顺当当执行了一半,如果你一看报错又让它重头来一遍,很容易就会重复插入数据或者把表结构弄出冲突来。
二、Navicat 脚本执行记录怎么查看
Navicat 脚本执行记录的查看入口有两处:一个是执行完以后弹出来的那个窗口,另一个是软件自己留在本地的日志文件,执行窗口适合当场出了问题赶紧排查,本地的日志则更适合后面再翻出来核对。
1、先看执行窗口
SQL 文件全部跑完之后,窗口里面会留下执行的状态和报错的提示,碰到语法出错、权限不够、字段不存在或者数据重复这类状况,眼光要先盯住失败语句附近给的提示;如果脚本特别长,也建议把那一段报错内容另存到一个地方,方便后面一段一段地拆开来处理。
2、查看 Windows 日志
在 Windows 系统里头用 Navicat 的时候,软件是会把已经执行过的语句记下来的;我们顺着【Tools】→【Options】→【File Locations】这条路径走进去,找到 Logs Location 这个位置,再打开 history.log 就能看到执行记录了,除了这个,Navicat 还会生成 cmdline.log 和 LogImport.txt 这两个文件,它们是专门用来记录命令行操作和导入相关信息的。
3、查看 macOS 和 Linux 日志
如果是在 macOS 或 Linux 下面用,那些已经跑过的语句多半就记在 QueryExec.log 里面;macOS 的日志文件一般待在使用者目录下那个叫 Navicat Logs 的文件夹里,Linux 的日志则一般放在使用者的配置目录下,名称也是 Logs 文件夹。
4、注意日志覆盖问题
有一点得留个心,Navicat 的说明里头讲到,有一部分日志是在软件启动的时候才会去更新的,所以如果你想把执行记录长久留底,就不能光靠本地的这份日志;比较重要的脚本应当单独归档起来,顺便把执行的那个人、执行时间、目标库、脚本版本和执行的结果一起写清楚。
三、Navicat 脚本执行异常怎么核对
脚本万一跑出异常了,先别一看见报错就急急忙忙把整份脚本又整个儿扔进去重新跑,更合理的做法是先确定目标环境没搞错,再回头去找那个具体出问题的语句。
1、检查数据库是否选错
同一台服务器的肚子里,很可能同时装着测试库、预发布库和正式库好几个东西,所以执行前最好再瞄一眼左边那个数据库的名字,别让脚本稀里糊涂地跑到不是它该去的地方。
2、检查账号权限
建表、删表、改字段还有写数据这些操作,都得有相配的权限才行,一个只读账号也许顺顺当当连上了数据库,可要它去跑一条更新脚本,结果多半是会直接失败的。
3、分段执行问题语句
可以把报错位置周围的那几句 SQL 复制到查询编辑器里头,单独去跑一跑,这样就能定下来到底是语法写错了、字段名不对、字符集撞车了,还是数据的冲突;等把这个问题处理好之后,再去判断剩下的那些脚本是不是还应该继续跑完。
4、保留执行台账
凡是往正式环境上跑的脚本,都建议按照日期和版本老老实实地归好档,台账里头要交代清楚脚本文件名、执行的对象、备份放在哪里,还有核对出的结果,这样一来,以后数据万一有个什么异常,回头去查来源也容易得多。
总结
跑批量 SQL 脚本的时候,最容易从眼皮底下溜过去的两件事,就是目标库有没有指对,和执行的过程有没有留下痕迹,把 Navicat 里怎么运行 SQL 脚本、怎么查看执行记录这两个问题吃透,操作上就可以大致沿着“先选中数据库、执行 SQL 文件、查看窗口的提示、跟本地日志对对账、最后把执行台账归档”这样一个顺序去处理;要是脚本挺长或者沾着正式数据,先在测试库里验一验,再正经安排到正式环境跑,通常会稳当得多。
展开阅读全文
︾