我正在做一个需要从FileNet系统中提取文档的项目。我需要提取由他们的Object_ID标识的文档,并将它们存储在文件中。该系统在Windows下工作,并使用Oracle 11G数据库。问题是:是否有一种使用直接数据库访问和SQL检索文档内容的方法?我是否可以编写一个SQL查询,通过将文档的Object_ID作为参数来检索文档的二进制内容。谢谢
发布于 2015-07-16 09:09:02
内容不必存储在数据库中。它可以是BLOB,但也可以存储在FileStores、文件或固定内容区域中。如果它们存储在数据库中,技术上您应该能够通过GUID查询检索它们。
但是,我建议将Java用于检索内容。这将使您能够管理所有情况(各种内容区域、多内容元素.)。我不知道您打算导出多少文档,但可以使用API (批处理、多线程.)对其进行显着优化。
发布于 2015-08-18 07:50:01
如果你愿意的话,我可以帮你完成这个任务,
通常,FileNet的内容存储在windows或Linux甚至AIX中名为/cestore的目录中。
由于目录中文件数量的限制,特别是在基于Unix的系统中,它们将文件存储在长树中,如in 01/ in 03/ in 04。
所以你要做的是
通常,文件名具有下一格式{DocumentId}
您将通过ApacheIOCommon或更好的python等库扫描/cestore下的所有文件,将它们存储在Map中,然后就可以获得所有文档的任何文档路径。
发布于 2018-07-16 17:12:42
回答一个老问题。但我觉得这能帮上忙。对于这里给出的情况,IMHO、FileNet查询是最好的解决方案。你就是这样做的:
Domain domain = Factory.Domain.fetchInstance(conn, null, null);
ObjectStore objStore = Factory.ObjectStore.fetchInstance(domain, osName, null);
SearchScope search = new SearchScope(objStore);
// your doc-class and identifier (index) goes here
String sql1 = "Select * from DocClassName where someIndex=abc456";
SearchSQL searchSQL = new SearchSQL(sql1);
DocumentSet documents = (DocumentSet) search.fetchObjects(searchSQL, Integer.valueOf("20"), null, Boolean.valueOf(true));
// go nuts on doc
Document doc;https://stackoverflow.com/questions/31442703
复制相似问题