Data Transfer模板不跨平台自动同步,需手动导出导入;Windows存于%APPDATA%\PremiumSoft\Navicat\Templates\DataTransfer,macOS在~/Library/Application Support/PremiumSoft/Navicat/Templates/DataTransfer,Linux在~/.navicat/Templates/DataTransfer,且须确保UTF-8无BOM编码、正确权限及路径适配。
Data Transfer 模板本身不跨平台自动同步,Navicat 17 不会把你在 Windows 上保存的模板自动推送到 macOS 或 Linux 的安装目录里。你得手动导出再导入,否则另一台机器上根本看不到你调好的字段映射、转换规则或忽略条件。
模板文件实际存哪儿?路径差异必须清楚
不同系统下,data transfer 模板是纯文本 xml 文件,但存放位置不一样:
- Windows:
%APPDATA%\PremiumSoft\Navicat\Templates\DataTransfer - macOS:
~/Library/Application Support/PremiumSoft/Navicat/Templates/DataTransfer - Linux:
~/.navicat/Templates/DataTransfer
别直接复制整个 Templates 目录——里面混着查询模板、连接模板等其他类型,只取 DataTransfer 子目录下的 .xml 文件即可。文件名通常带时间戳或自定义前缀,比如 mysql_to_pg_20260615.xml。
导入时容易被忽略的权限和编码问题
macOS/Linux 上如果双击导入失败,大概率是文件权限或编码惹的祸:
- 确保导入的
.xml文件是 UTF-8 无 BOM 编码(用 VS Code 或 Sublime 确认,别用记事本另存) - Linux/macOS 下,
DataTransfer目录需有读写权限:chmod 755 DataTransfer,文件本身至少644 - 模板里若含绝对路径(比如
/tmp/export.csv),迁移到另一系统后要手动改——Navicat 不做路径适配
异构数据库模板不能直接复用
从 MySQL 迁到 PostgreSQL 的模板,和从 Oracle 迁到 SQL Server 的模板,底层字段类型映射规则完全不同。Navicat 不会智能转换 TEXT → TEXT 这类表面一致但语义不同的类型:
-
MySQL TINYINT(1)映射成BOOLEAN是常见需求,但 PostgreSQL 的BOOLEAN不接受0/1字面量,模板里得显式加转换表达式:CASE WHEN ${col} = 1 THEN TRUE ELSE FALSE END -
Oracle DATE和MySQL DATETIME都叫日期,但精度、时区行为不同,模板里若没开「Use timestamp with timezone」选项,数据可能偏移 - Navicat 不校验模板语法是否适用于目标库——它只按你写的执行,错在运行时才报
ERROR: column "xxx" is of type boolean but expression is of type integer
真正麻烦的不是导出导入动作本身,而是模板里那些隐式依赖:字符集声明、NULL 处理策略、大字段截断阈值。这些参数在 UI 里不显眼,但写进 XML 后就固化了——换平台不检查,跑起来才发现中文乱码或长文本被无声截断。











