从包含超过 100k 个具有很多字段的文档的 Lotus 数据库中导出数据的最佳方法是什么?不需要应用程序逻辑,只需要存储在应用程序中的数据。数据库不包含每个文档的表单设计元素。LEI 不是我们的选择。
- 目前我们使用java代理导出数据到MS EXCEL,但是运行时间太长。
- notes-sql可能会更快,
- ...或者是否有任何可以足够快的替代解决方案?
获取所有内容的最快方法可能是导出到 DXL,然后读取该 DXL 以获得所需的数据。
这是一些示例代码,用于导出数据库中记录的第一个选择(LotusScript 代理)。写入名为 C:\temp\data.xml 的文件。
Option Public
Option Declare
Sub Initialize
Dim nsn As New NotesSession
Dim ndb As NotesDatabase
Dim ndc As NotesDocumentCollection
Dim ndo As NotesDocument
Dim ndxle As NotesDXLExporter
Dim nst As NotesStream
On Error Resume Next
Set ndb = nsn.CurrentDatabase
Set ndc = ndb.UnprocessedDocuments
Set ndo = ndc.GetFirstDocument
Set nst = nsn.createStream
If (Not(nst.Open( "c:\temp\DATA.xml" ))) Then
Print "Open File DATA.xml Failed"
End If
nst.truncate
Set ndxle = nsn.CreateDXLExporter (ndo, nst)
ndxle.Convertnotesbitmapstogif = true ' Not always needed.
Call ndxle.Process()
MsgBox ndxle.Log
Call nst.Close()
End Sub
将数据以 XML 格式保存到文件中的一种有效且简单的方法是使用如下 URL 检索它:
/view?ReadViewEntries&Start=1&Count=1000
您将有一个代码以 1000 块的形式获取所有 100K(此值可能会根据数据量进行调整,但如果它太大,服务器可能会挂起)。
该视图包含所有文档和所有项目作为列。
这种方法给服务器 HTTP 任务增加了很多负载,因此最好在安静的时间运行它。
如果您需要将数据导入 Excel,则必须查看当前代理,看看是否可以对其进行优化。