Navicat 17 不支持内置每日定时导出SQL脚本,需先保存为.njob作业文件,再通过--run-job配合系统任务计划或crontab调用;导出路径须用绝对路径且不支持日期变量,失败日志难追溯,建议改用pg_dump/mysqldump命令行方案。

Navicat 17 无法在软件内设置“每天定时导出SQL脚本”——它没有内置调度器,必须拆解为「保存导出作业 + 外部调度」两步执行。
必须先保存为可复用的导出作业(.njob)
Navicat 17 不允许对临时查询或未保存的导出操作做自动化调用。你得把整个流程固化成一个批处理作业文件:
- 右键目标数据库 → 选择【导出向导】→ 在「导出格式」页选
SQL 文件 (*.sql) - 在「导出选项」页勾选「包含创建语句」和「包含插入语句」(按需)
- 点击【高级】→ 勾选「将日志输出到文件」并指定绝对路径,例如
C:\logs\export_daily.log - 关键:完成前务必点击「保存」按钮,生成一个独立的导出配置文件(如
daily_backup_export.nq或直接保存为.njob) - 若想导出多个库或表,需在导出向导中手动勾选,不能靠通配符或正则
导出作业必须用 navicat.exe --run-job 触发
Navicat 17 的 --run-job 是唯一支持命令行驱动的入口,但不接受参数传参(比如日期变量),所有路径都得写死:
- Windows 下,用任务计划程序新建基本任务,操作设为:
程序:navicat.exe(完整路径,如C:\Program Files\PremiumSoft\Navicat Premium 17\navicat.exe)
参数:--run-job "C:\jobs\daily_export.njob" - Linux/macOS 下,在
crontab -e中添加:0 2 * * * /path/to/navicat --run-job "/path/to/daily_export.njob" -
.njob文件里导出目标路径不能含%DATE%或$(date)—— 这些在 Navicat 内部不解析;想实现带日期的文件名,只能改用外部脚本封装(比如用 PowerShell 或 Bash 先生成带时间戳的.njob再调用)
导出失败时日志几乎不可追溯
Navicat 17 的导出作业失败后,错误信息只显示在弹窗或临时日志窗口里,关闭即丢:
- 执行前建议打开 Windows 事件查看器 → 应用程序日志,筛选来源为
Navicat的条目(但通常只有崩溃类事件,不含 SQL 错误细节) - 若导出因权限/锁表/磁盘满失败,界面可能只显示「导出失败」而无具体原因;此时需人工点开日志窗口,用
Ctrl+A→Ctrl+C复制全文 - PostgreSQL 用户注意:
pg_dump实际报错(如 schema not found)不会透出 stderr,Navicat 只包装了极简提示 - 真正需要可审计日志,应放弃 GUI 导出,改用
pg_dump或mysqldump命令行 + 重定向 stderr 到文件
最易被忽略的一点:Navicat 17 启动时会读取 %APPDATA%\PremiumSoft\Navicat Premium 17\Queries\ 和 Jobs\ 目录下的文件,但如果你把 .njob 放在其他路径,且 navicat.exe 是以不同用户身份运行(比如系统服务模式),就可能读不到——务必用绝对路径,并确认权限可读。











