无Domino服务器权限时如何通过MSSQL连接Lotus NSF文件提取数据
无Domino服务器权限时MSSQL读取NSF文件的可行方案
方案1:ODBC驱动中转接入(支持直接在MSSQL中创建链接服务器查询)
- 首先本地安装对应NSF文件版本的Lotus Notes Client,在客户端中配置NSF文件的本地访问权限,输入数据库密码完成本地挂载
- 安装IBM官方的Lotus Notes ODBC Driver,安装完成后在系统ODBC数据源管理器中配置指向本地NSF文件的DSN,测试连接正常
- 打开MSSQL Server Management Studio创建链接服务器:
- 提供程序选择
Microsoft OLE DB Provider for ODBC Drivers - 数据源选择刚配置完成的NSF对应ODBC DSN
- 配置安全验证信息后即可完成创建
- 提供程序选择
- 后续直接通过T-SQL语句查询即可,示例查询格式:
SELECT * FROM OPENQUERY([你的链接服务器名称], 'SELECT 字段名 FROM NSF中的表单名') - 注意:查询时需要保持Lotus Notes Client处于登录状态,否则会触发权限校验失败
方案2:结构化中间文件批量导入(适合大文件批量处理,性能更稳定)
- 本地安装NotesSQL或第三方NSF解析工具,将NSF文件按表单批量导出为CSV格式,比导出SQL文件兼容性更强、出错概率低,导出时统一字符编码为UTF-8避免乱码
- 打开MSSQL导入导出向导,选择平面文件源,选中导出的CSV文件,匹配字段类型后直接导入到对应数据库表中,20GB数据可按表单分批次导入避免超时
- 也可以通过T-SQL的
BULK INSERT命令直接导入CSV,示例命令:
BULK INSERT 目标表名 FROM 'C:\导出的CSV文件路径.csv' WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', CODEPAGE = '65001', FIRSTROW = 2 )
- 导入完成后即可直接在MSSQL中编写查询语句处理数据,性能比链接服务器查询更高,适合全量数据提取场景
方案3:本地脚本解析中转(适合自定义字段处理场景)
- 用Python的
win32com库调用本地Lotus Notes Client的COM接口,编写脚本批量读取NSF中的文档,将字段映射为结构化数据后直接写入MSSQL - 该方案支持自定义数据清洗规则,可以提前过滤无效数据,避免导入垃圾数据占用MSSQL存储空间
注意事项
- 所有方案都要求本地安装对应版本的Lotus Notes Client,且拥有NSF文件的访问密码,目前没有完全脱离Notes客户端的NSF直接解析方案支持全量字段读取
- 如果遇到RTF富文本字段解析异常,可以先在导出时将富文本转换为纯文本或HTML格式后再导入MSSQL
内容的提问来源于stack exchange,提问作者Asmir Rogo
相关产品推荐
相关产品推荐

