MagicDraw导入CSV格式SQL schema:列类型映射报错及映射方案咨询
解决MagicDraw导入CSV时SQL类型映射报错的问题
核心问题原因
MagicDraw的SQL ANSI类型并非全局可见,必须明确指定其所在的库路径;直接使用类型名(如char)或原生类型名(如String)时,系统无法定位到对应元素,因此报错。
具体解决方案
1. 确保SQL ANSI类型库已加载
- 打开MagicDraw,在资源管理器中检查是否存在
ANSI SQL Type Library。 - 若未加载,通过
文件 > 导入 > 库,选择MagicDraw安装目录下data/libraries中的ANSI SQL Type Library.mdzip完成加载。
2. 修正CSV类型字段的映射规则
不能直接使用CSV中的char/CHAR,必须指定完整的库元素路径:
- 对于CSV中小写的类型名(如
char),映射值写为ANSI SQL Type Library::char - 对于CSV中大写的类型名(如
CHAR),先在映射规则中添加字符串转换步骤,将输入值转为小写,再拼接库路径。
3. 使用自定义脚本实现自动类型映射(推荐)
如果CSV中的类型名大小写不统一,或需要批量映射多种类型,可通过MagicDraw的导入脚本功能实现自动转换:
- 在CSV导入配置中,找到
COL_TYPE字段的映射设置 - 将映射方式改为脚本,粘贴以下Jython代码:
# 类型映射表:CSV中的类型名 -> SQL ANSI类型的完整路径 type_mapping = { "CHAR": "ANSI SQL Type Library::char", "VARCHAR": "ANSI SQL Type Library::varchar", "INT": "ANSI SQL Type Library::integer", "INTEGER": "ANSI SQL Type Library::integer", "DATE": "ANSI SQL Type Library::date", "FLOAT": "ANSI SQL Type Library::float" # 根据你的CSV类型补充更多映射 } # 处理输入值:去除首尾空格,转为大写匹配映射表 input_type = value.strip().upper() # 返回对应路径,未匹配到则用默认类型(可自行修改) return type_mapping.get(input_type, "ANSI SQL Type Library::varchar")
- 保存配置后重新执行第二轮导入,系统会自动将CSV中的类型字符串映射到对应的SQL ANSI类型元素。
关于原生类型报错的说明
若尝试使用UML原生类型(如String),同样需要指定完整路径:UML Standard Profile::String,但根据需求,建议优先使用SQL ANSI类型库中的元素。
内容的提问来源于stack exchange,提问作者karldegen
相关产品推荐
相关产品推荐

