Navicat CLI 工具是 navicatcmd.exe(Windows)或 navicatcmd(macOS/Linux),需在安装时手动勾选「Command Line Tools」组件才能启用;默认不安装,且仅限 Navicat 16+ 版本。
Navicat CLI 工具在哪找、怎么启用
navicat 官方不默认暴露命令行工具,navicat.exe 本身不能直接执行 sql 或调度任务;真正可用的是它内置的 navicatcmd.exe(windows)或 navicatcmd(macos/linux),但该工具仅在「navicat premium」或「navicat for mysql/postgresql」16+ 版本中随安装包一并释放,且**必须手动勾选安装**——很多人装完发现找不到 navicatcmd,就是因为安装时漏掉了「command line tools」选项。
验证是否存在:打开终端,运行 where navicatcmd(Windows)或 which navicatcmd(macOS/Linux)。若无输出,重装时务必勾选对应组件;不要试图从安装目录手动复制,路径硬编码会导致后续自动化失败。
- Windows 默认路径通常是
C:\Program Files\PremiumSoft\Navicat Premium 16\navicatcmd.exe - macOS 安装后需运行一次 GUI 版本,工具才会被注册到
/usr/local/bin/navicatcmd - Linux 版本极简,仅支持部分数据库类型,且不带图形界面依赖,但需提前安装
libglib-2.0-0等基础库
用 navicatcmd 执行 SQL 脚本的最小可行命令
不是所有 SQL 都能跑通。Navicat CLI 不解析交互式语法(比如 DELIMITER、USE db_name 单独一行)、不支持存储过程创建中的多语句分隔,本质是「连接 + 单条语句执行器」,适合数据同步、定时校验、轻量 ETL。
典型成功命令长这样:navicatcmd -profile="prod_mysql" -conn="my_db" -sql="SELECT COUNT(*) FROM users;" -output="count.txt"
-
-profile指向 Navicat 内保存的「连接配置集名称」,不是文件路径;大小写敏感,空格需引号包裹 -
-conn是该配置集下的具体连接名(即你新建连接时填的「连接名」字段) -
-sql中不能换行,不能含未转义的双引号;复杂查询建议先写入.sql文件,改用-file参数 -
-output输出的是纯文本结果,不含列头或格式化,如需 CSV,得靠外部工具(如awk)后处理
计划任务里调用失败的三个高频原因
在 Windows Task Scheduler 或 cron 里跑 navicatcmd 常见静默退出,不是脚本问题,而是环境缺失。
- GUI 用户上下文隔离:Windows 下若以系统账户或无桌面会话运行,
navicatcmd会卡在连接认证环节(它底层仍依赖部分 GUI 组件初始化);解决方案是勾选任务属性里的「不管用户是否登录都要运行」+「只在本地运行」 - 密码未预存:如果连接配置里用的是「保存密码」而非「使用操作系统验证」,CLI 无法读取加密密钥;必须在 Navicat GUI 中用当前用户登录一次,让密钥环完成初始化
- 路径空格与编码:Windows 批处理中若路径含中文或空格,又没全用引号包住,
navicatcmd启动即报错Failed to load library;推荐统一用短路径(如C:\navi\)并避免中文
替代方案比硬啃 navicatcmd 更可靠
如果你只是想定时跑 SQL、导出数据、触发备份,navicatcmd 的能力边界太窄,还强依赖桌面环境和 GUI 初始化状态。更稳的做法是绕过它:
- MySQL 直接用
mysql客户端:配合--defaults-file存凭证,mysqldump做备份,完全脱离 Navicat - PostgreSQL 用
psql+pg_dump,同样支持配置文件免密 - 需要可视化编排?用 Airflow 或 GitHub Actions 调用原生 CLI,再把结果发钉钉/邮件,链路清晰、日志完整、权限可控
Navicat 的 CLI 工具适合已有大量现成连接配置、且只做简单查询的过渡场景;一旦涉及错误重试、参数注入、多步骤依赖,立刻切出去。










