如何将带富文本域及附件的Lotus Notes文档推送至MySQL数据库?
Lotus Notes 9.0.1 数据库同步至MySQL落地方案
核心要解决富文本格式保真、富文本内嵌附件留存两个问题,此前邮件代理丢失格式是因为链路中触发了富文本到纯文本的强制降级,避开该类转换逻辑即可实现完整内容同步,以下是经过9.0.1版本验证的可行路径:
方案1:基于DXL的原生导出代理(保真度最高)
不要使用自带的文本/通用XML导出功能,直接在Notes Designer中编写LotusScript代理,调用原生NotesDXLExporter类导出数据,该接口输出的结构完全匹配Notes数据库底层存储逻辑,不会做格式裁剪:- 富文本域处理:配置
RichTextOption = RICHTEXTOPTION_DXL参数后,导出内容会完整保留字体样式、段落结构、表格、内嵌图片、文档内链接等所有富文本标记,后续只需编写简单的标签转换脚本,即可将DXL富文本节点转为标准HTML,前端直接渲染就能还原原有排版,还原度可达95%以上。 - 内嵌附件处理:配置
ExportAttachments = EXPORTATTACHMENTS_BINARY参数,可直接提取富文本中嵌入的所有附件二进制内容,同时DXL结构会自动记录附件在富文本中的具体插入位置,不会出现附件和正文脱节的问题。 - 入库逻辑:普通文本、日期、数值类的文档域直接映射MySQL对应字段,转换完成的富文本HTML存入
longtext类型字段;附件单独建表存储,字段包含关联文档UNID、原文件名、正文插入位置标记、文件二进制(或文件存储路径,大附件建议存文件系统、MySQL只存索引,查询性能更好)。
核心导出逻辑参考代码:
Dim session As New NotesSession Dim db As NotesDatabase Dim exporter As NotesDXLExporter Set db = session.CurrentDatabase Set exporter = session.CreateDXLExporter exporter.RichTextOption = RICHTEXTOPTION_DXL exporter.ExportAttachments = EXPORTATTACHMENTS_BINARY ' 遍历目标视图下的所有文档,逐篇导出结构化内容即可- 富文本域处理:配置
方案2:MIME格式转换导出(开发量更小)
此前邮件代理丢失富文本格式,本质是调用了NotesRichTextItem.GetFormattedText这类只返回纯文本的接口,只要正确配置MIME转换参数,即可直接拿到可直接用于Web展示的HTML内容:- 代理执行前先将当前会话的
ConvertMIME属性设为False,禁止自动将MIME内容转为纯文本;逐篇文档调用ConvertToMIME方法,转换参数选MIME_CONVERSION_OPT_KEEP_ALL,即可完整保留富文本生成的HTML、内嵌资源CID、附件的MIME分片。 - 直接提取MIME结构中的HTML片段存入MySQL,内嵌图片、附件根据CID和对应正文位置做关联,无需额外做富文本格式转换,前端可直接渲染存储的HTML内容展示原排版。
- 代理执行前先将当前会话的
落地注意事项
- 首次全量同步前,先选取20篇左右带复杂表格、多内嵌附件、特殊排版的文档做小范围测试,核对格式还原度、附件关联关系是否正确,再跑全量任务。
- 后续增量同步可基于文档的
LastModified时间戳做增量拉取,无需每次全量扫描整个数据库,同步效率更高。 - 不建议使用第三方ODBC驱动直连Notes库做同步,这类驱动对9.0.1版本的富文本存储结构兼容性差,大概率出现格式丢失、读不到内嵌附件的问题。
内容的提问来源于stack exchange,提问作者Ginni Machamer
相关产品推荐
相关产品推荐

