DQL查询返回Documentum中Cabinet中的所有文件?

时间:2014-01-21 02:36:46

标签: sql database dql documentum dfc

我想从一个柜子中检索所有文件(称为“Wombat Insurance Co”)。目前我正在使用此DQL查询:

select r_object_id, object_name from dm_document(all) 
where folder('/Wombat Insurance Co', descend);

这是好的,但它只返回最多100个结果。如果机柜中有5000个文件,我想获得全部5000个结果。有没有办法使用分页来获得所有结果?

我试过这个问题:

select r_object_id, object_name from dm_document(all) 
where folder('/Wombat Insurance Co', descend) 
ENABLE (RETURN_RANGE 0 100 'r_object_id DESC');

意图以100个文件为增量获得结果,但是当我尝试执行它时,此查询会给我一个错误。错误说明了这一点:

com.emc.documentum.fs.services.core.CoreServiceException: "QUERY" action failed.

java.lang.Exception: [DM_QUERY2_E_UNRECOGNIZED_HINT]error:  
"RETURN_RANGE is an unknown hint or is being used incorrectly."

我认为我正在使用RETURN_RANGE提示,但也许我不是。任何帮助将不胜感激!

我也尝试使用提示ENABLE(FETCH_ALL_RESULTS 0),但这仍然只返回最多100个结果。

为了澄清,我的问题是:如何从机柜中获取所有文件?

3 个答案:

答案 0 :(得分:2)

啊哈,我已经弄清楚了。使用DFS with Java(DFC之上的抽象层),您可以设置查询结果的起始索引:

String queryStr = "select r_object_id, object_name from dm_document(all) 
                   where folder('/Wombat Insurance Co', descend);"

PassthroughQuery query = new PassthroughQuery();
query.setQueryString(queryStr);
query.addRepository(repositoryStr);

QueryExecution queryEx = new QueryExecution();
queryEx.setCacheStrategyType(CacheStrategyType.DEFAULT_CACHE_STRATEGY);
queryEx.setStartingIndex(currentIndex);      // set start index here

OperationOptions operationOptions = null;

// will return 100 results starting from currentIndex
QueryResult queryResult = queryService.execute(query, queryEx, operationOptions);

您只需增加currentIndex变量即可获得所有结果。

答案 1 :(得分:2)

您已经接受了使用DFS的答案。

由于您正在玩DFC,这些信息可能会对您有所帮助。

<强> DFS:

如果您使用的是DFS,则必须了解可以使用DFS使用的并发会话数。 我认为它是100或150。

<强> DFC

实际上你可以通过DFC获取一个限制(我不确定DFS)。

转到DFC应用程序(webtop或da或任何其他内容)并检查dfc.properties文件。

# Maximum number of results to retrieve by a query search.                      
# min value:  1, max value: 10000000
# 
dfc.search.max_results = 100

# Maximum number of results to retrieve per source by a query search.           
# min value:  1, max value: 10000000
# 
dfc.search.max_results_per_source = 400

dfc.properties.full或类似文件,您可以根据您的系统验证这些值。

我说的是ContentServer端,而不是客户端dfc.properties文件。

如果您对DFC使用ENABLE (RETURN_TOP)提示,则有两种方法可以从ContentServer获取结果。

  1. 基于对象
  2. 基于行
  3. 您必须使用server.ini文件中的参数return_top_results_row_based进行配置。

    对于documentum服务器端的所有这些更改,而不是对于DFC / DQL客户端。

答案 2 :(得分:0)

我已经使用DFC API(使用Java)一段时间但我不记得查询的任何默认限制,IIRC我们总是得到所有文件,没有任何限制。实际上(根据我的说明),我们必须明确设置限制,例如enable (return_top 2000)。 (据我所知,语法可能取决于EMC Documentum背后的DBMS。)

猜一猜:查看您的dfc.properties文件。