Marklogic如何保存多个工作区

时间:2018-08-11 21:20:09

标签: marklogic

我在Marklogic Qconsole中有多个工作区。如何一次导出所有工作区。而不是一次将一个工作区导出到计算机。谢谢

1 个答案:

答案 0 :(得分:5)

您的工作空间保存在 App-Services 数据库中。它们具有一个qconsole:workspace元素,并且将具有一个qconsole:userid元素以及您的用户名。

使用一些QConsole应用程序用于生成导出的内置函数,您可以将工作空间转换为导出格式。

下面是一个查询,您可以运行该查询来查找所有工作区,生成导出格式,然后将其保存到服务器上的/tmp目录中:

xquery version "1.0-ml";
declare namespace qconsole="http://marklogic.com/appservices/qconsole";
import module namespace qconsole-model="http://marklogic.com/appservices/qconsole/model" 
  at "/MarkLogic/appservices/qconsole/qconsole-model.xqy";
import module namespace amped-qconsole = 

xdmp:invoke-function(
  function(){
    let $workspaces := cts:search(/qconsole:workspace, 
                         cts:element-value-query(xs:QName("qconsole:userid"), 
                           string(xdmp:get-current-userid())))
    for $workspace in $workspaces
    let $name := $workspace/qconsole:name/string()
    let $wsid := $workspace/qconsole:id/data()
    let $export := qconsole-model:export-workspace($wsid)
    return 
      xdmp:save("/tmp/"||$name||".xml", $export)
  },
  <options xmlns="xdmp:eval">
    <database>{xdmp:database("App-Services")}</database>
  </options>
)