Navicat Premium不支持将物理模型直接导出为XML;仅能导出为.ndm、SQL、PDF/HTML/PNG格式;若需XML元数据,须通过导出SQL后脚本解析,或查询information_schema后利用查询结果导出XML实现。

Navicat Premium不支持直接导出物理模型为XML
物理模型(Physical Model)在Navicat中是通过 Navicat Data Modeler 模块设计的,它本身没有“导出为XML”这一原生选项。你看到的“导出XML”功能仅存在于 导出向导(针对表、视图等运行时对象)或 查询结果导出 中,与模型文件无关。
物理模型能导出的格式只有 .ndm 和 SQL
当你在 Navicat Data Modeler 界面打开一个物理模型后,右键模型画布或使用菜单栏 文件 → 导出,可选格式固定为:
-
.ndm(Navicat专属二进制模型文件,不可读、不可被其他工具解析) -
SQL 脚本(含 CREATE TABLE / INDEX / FK 等语句,兼容主流数据库) -
PDF / HTML / PNG(仅用于文档或展示,不含结构定义数据)
不存在“XML Schema”“XSD”或“ERD as XML”这类导出项。所谓“标准XML”必须包含可解析的命名空间、元素层级和类型声明,而Navicat不生成这类内容。
想获得XML结构描述?只能间接绕行
如果你实际需要的是用XML描述表名、字段名、类型、主外键等元数据(例如供下游系统做字段映射),可行路径只有两条:
- 先用
Navicat Data Modeler导出为SQL,再用脚本(Python/Shell)解析 SQL 中的CREATE TABLE语句,生成自定义 XML —— 注意要处理括号嵌套、注释、多行定义等边界情况 - 切换到数据库实例层面:连接真实数据库,在 Navicat 中对
information_schema执行查询(如SELECT table_name, column_name, data_type FROM information_schema.columns WHERE table_schema = 'xxx'),然后用查询结果导出 → XML功能导出该结果集 —— 这才是 Navicat 唯一能稳定产出 XML 的方式
后者导出的 XML 是扁平的记录列表(每行一个 <row></row>),不是带嵌套关系的 Schema 描述,但字段完整、编码可控(务必选 UTF-8),适合程序消费。
容易忽略的关键限制
即使走查询导出路线,也要注意:information_schema 的字段命名和内容因数据库类型而异(MySQL vs PostgreSQL vs SQL Server),比如主键信息可能在 KEY_COLUMN_USAGE 表里,外键约束需额外 JOIN;Navicat 的 XML 导出不支持自定义根节点名或添加命名空间,也无法控制空值表示方式(默认省略字段还是输出 <column></column>)。这些都得靠后续清洗补全。


















