Navicat Premium 不支持直接推送数据到 FTP,必须分两步:先导出(SQL/CSV/XLSX/.sql.gz)再用脚本+系统调度上传;推荐 mysqldump + lftp + crontab/任务计划程序组合实现。

Navicat Premium 本身不支持直接推送数据到 FTP 服务器。它没有内置 FTP 客户端、导出后自动上传功能,也没有 FTP 目标类型的「数据传输」或「同步」选项。所谓“推送到 FTP”,必须拆解为两个独立动作:先导出数据 → 再上传文件,而 Navicat 只负责前半段。
Navicat 能导出什么格式,哪些适合传 FTP?
Navicat 的「数据传输」或「备份」功能可导出为以下几种文件,其中只有部分能被 FTP 合理接收:
-
SQL 文件(.sql):结构 + 数据,文本格式,FTP 兼容性最好,但体积大、无压缩、无校验 -
CSV 文件(.csv):纯文本,轻量,易被下游解析,但需注意字段分隔符、换行、中文编码(务必设为UTF-8 with BOM或明确指定编码) -
Excel 文件(.xlsx):二进制,FTP 可传,但非标准数据交换格式,目标端若无 Excel 环境难处理 -
MySQL 备份(.sql.gz):仅限 Navicat for MySQL 16+ 支持导出为 gzip 压缩 SQL,节省带宽,但需目标端有解压能力
不推荐用 NSX 或 NCX 这类 Navicat 专有任务文件——它们是配置描述,不是数据,FTP 上毫无意义。
为什么不能用「自动运行」或「计划」直接推 FTP?
Navicat 的「计划」功能本质是 GUI 任务调度器,只支持两类操作:
- 执行已保存的
数据传输任务(.nsx)→ 输出到目标数据库,不是文件 - 执行已保存的
同步任务(.ncx)→ 比对并更新目标库,也不生成文件
它**没有「导出为文件 + 调用外部命令上传」的能力**。你拖一个导出任务进「自动运行」列表,只会看到报错:Failed to load job: Unsupported operation 或静默失败。
真正可行的定时推送方案(Windows / macOS / Linux)
必须绕过 Navicat 的计划系统,改用操作系统级调度 + 脚本组合:
- 第一步:在 Navicat GUI 中手动执行一次「数据传输」,勾选「导出为 CSV/SQL」并指定固定路径(如
C:\backups\orders_$(date +%Y%m%d).csv),记下完整导出逻辑;然后关闭窗口——这步只为生成可复现的导出行为,不依赖自动运行 - 第二步:用脚本封装导出动作(关键!):
• Windows:写.bat调用navicat.exe -export ...(注意:Premium 16+ 才支持命令行导出,且参数极难调试,官方文档几乎不提)
• 更稳做法:放弃 navicat 命令行,改用原生命令 —— 例如 MySQL 用mysqldump,SQL Server 用sqlcmd,导出后再用curl或lftp上传 - 第三步:上传工具选型:
•curl -T file.csv ftp://user:pass@host/path/(简单,但密码明文、不支持被动模式)
•lftp -c "set ftp:ssl-allow false; open ftp://user:pass@host; put file.csv"(推荐,支持断点续传、被动模式、脚本化) - 第四步:加入系统调度:
• Windows:任务计划程序中新建任务,触发器设为每天 6 点,操作为「启动程序」→ 指向你的.bat脚本,务必勾选「不管用户是否登录都要运行」+「使用最高权限运行」
• macOS/Linux:crontab 添加一行:0 6 * * * /path/to/backup_and_upload.sh
常见坑:lftp 在 Windows 需额外安装(如通过 MSYS2 或 Chocolatey),且默认不带 SSL;FTP 路径末尾加不加 / 会影响上传位置;中文文件名在某些 FTP 服务端会乱码,建议用英文命名 + 时间戳。
容易被忽略的硬性前提
即使脚本写对,推送仍可能卡在底层:
- FTP 服务器必须允许该 IP 的主动连接(或正确配置被动端口范围),否则
lftp卡在Waiting for welcome message - Navicat 导出时若选了「使用 Windows 默认编码」,CSV 中文会变
???;必须在导出对话框里手动选UTF-8并勾选BOM - 如果目标 FTP 是阿里云 OSS、腾讯云 COS 这类对象存储,别用 FTP 协议——应换用
ossutil或coscli工具,协议和认证方式完全不同
最简验证法:先手动跑一遍脚本,确认本地生成了文件、上传后 FTP 目录里能看到且大小一致,再交由定时器驱动。别跳过这一步。


















