导出lotus notes中的数据

把数据从lotus notes导出到关系数据库有很多方法:
编写lotus script提取数据并写到外部数据库中;
用lotus提供的java api提取数据并写到外部数据库中;
通过lotus提供的jdbc连接来获取数据并写到外部数据库中;
使用COM技术访问lotus对象提取数据然后写到外部数据库中。

上面这几种方法都大同小异。你都要和notes的对象打交道。notes的对象嵌套得比较厉害:数据库包含视图,试图筛选出文档集合,文档下面是item,item还分好多种。其中richtext的item还包含段落,段落下是纯文本和run(包含格式的文本),还有附件。这样,要导出完整的数据,就要写很多层嵌套的foreach遍历,加上很多的if做类型判断。如果你对notes的对象层次不是很清楚,就有可能在这复杂的嵌套编写中出错并浪费时间。幸运的是,lotus内建了一种数据导出机制,可以把数据库、文档等notes对象导出成xml文件。这样你就不用跟notes的那些层层嵌套的对象打交道了。xml解析可是要简单多了而且大多数程序员都会,这样就可以把notes程序员解放出来了。甚至如果你象我一样,不是一个很循规蹈矩的程序员,那么只要用正则表达式提取关键数据就可以了。:)

下面的代码演示了如何导出一个数据库:

Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase

REM Open xml file named after current database
Dim stream As NotesStream
Set stream = session.CreateStream
filename$ = "c:/dxl/" & Left(db.FileName, Len(db.FileName) - 3) & "dxl"
If Not stream.Open(filename$) Then
Messagebox "Cannot open " & filename$,, "Error"
Exit Sub
End If
Call stream.Truncate

REM Export current database as DXL
Dim exporter As NotesDXLExporter
Set exporter = session.CreateDXLExporter
Call exporter.SetInput(db)
Call exporter.SetOutput(stream)
Call exporter.Process

NotesDXLExporter的SetInput方法不仅可以接受数据库作为参数,还能接受文档、item等作为参数。根据你个人的需要,可以导出任何东西。

这样,我们多走了一步:notes->xml->关系数据库。但是要简单了很多。

你可能感兴趣的:(Java)