如何在IBM Rational DOORS中导入CSV更新已有ID的属性?
解决IBM Rational DOORS从CSV批量填充属性值的问题
嘿,我之前也帮人处理过类似的DOORS属性导入需求,结合你的情况,给你梳理几个可行的方案:
首先先明确下你的SRD-123格式ID——这是模块内的相对对象编号,DOORS的"go to"功能支持相对和绝对编号(绝对编号是全路径格式,比如/主项目/SRD模块/SRD-123),导入时只要确保上下文对应就行。
一、先试试调整CSV格式,用GUI导入搞定
DOORS原生的CSV导入其实能实现你的需求,之前失败大概率是格式或导入配置没做对,你可以按下面的步骤调整:
- CSV格式修正:确保第一行表头和DOORS里的属性名完全一致(大小写、空格都不能错),比如你的列名就是
ID,Attribute1,Attribute2,别出现拼写偏差。另外如果Attribute2是带换行或逗号的文本,记得用双引号把内容包裹起来,避免拆分错误。 - 导入时的关键设置:
- 打开你要更新的目标DOORS模块,选
File > Import > CSV - 选中你的CSV文件后,进入映射步骤:
- 把
ID列映射到DOORS的Object Identifier选项(如果你的ID是绝对路径就选绝对编号,否则用相对的就行) - 把
Attribute1和Attribute2分别对应到模块里已有的同名属性
- 把
- 一定要勾选**"Update existing objects only"**(只更新已有对象),别选创建新对象的选项,这样就只会匹配已有ID的对象,不会乱加新条目
- 确认当前打开的模块就是这些ID所在的模块,不然会匹配不到对象
- 打开你要更新的目标DOORS模块,选
要是还是失败,建议先从DOORS里导出一个包含现有ID和空属性的样本CSV,对比你的表格格式是不是有差异——比如编码、分隔符之类的,有时候Excel保存CSV会有格式坑。
二、如果GUI搞不定,用DXL脚本更靠谱
要是批量数据多,或者GUI导入始终有匹配问题,DXL脚本是最灵活的方案,下面给你一个基础的脚本框架,你可以根据自己的情况修改:
// 替换成你的目标模块路径,Windows路径要用双反斜杠 Module targetModule = edit("/你的项目路径/目标模块名", false) if (null targetModule) { print "模块打开失败,请检查路径\n"; exit } // 替换成你的CSV文件路径 string csvFilePath = "C:\\你的文件夹\\属性更新表.csv" File csvFile = open(csvFilePath, "r") if (null csvFile) { print "CSV文件打不开,请检查路径\n"; close(targetModule); exit } // 跳过CSV的表头行 string currentLine = read(csvFile) // 逐行读取CSV内容 while (!end(csvFile)) { currentLine = read(csvFile) if (currentLine == "") continue // 跳过空行 // 拆分CSV行(如果Attribute2带逗号,需要处理引号,这里是简单版,复杂情况可以优化拆分逻辑) string objID = split(currentLine, ",", 0) string attr1Value = split(currentLine, ",", 1) string attr2Value = split(currentLine, ",", 2) // 根据ID查找模块里的对象 Object targetObj = object(objID, targetModule) if (null targetObj) { print "未找到匹配对象:" objID "\n" continue } // 给对象设置属性值,属性名要和DOORS里的完全一致 targetObj."Attribute1" = attr1Value targetObj."Attribute2" = attr2Value } // 保存模块并关闭 save(targetModule) close(targetModule) print "属性批量更新完成!\n"
脚本使用提示:
- 运行前一定要备份你的DOORS模块,避免误操作
- 如果
Attribute2是多行文本,CSV里要把内容用双引号包起来,脚本的拆分逻辑可能需要调整(比如用专门的CSV解析逻辑处理引号) - 要是你的ID是绝对编号,把
object(objID, targetModule)改成object(objID)就行
三、总结一下
- 少量数据的话,调整CSV格式+GUI导入就能解决,不用搞复杂的层级结构;
- 数据量大或者GUI匹配有问题时,DXL脚本是更高效可靠的选择;
- 核心要求就是:ID能唯一匹配DOORS里的对象,属性名称和系统里的完全对应。
内容的提问来源于stack exchange,提问作者user3504671
相关产品推荐
相关产品推荐

