代码之家  ›  专栏  ›  技术社区  ›  thichxai

Marklogic如何保存多个工作区

  •  2
  • thichxai  · 技术社区  · 6 年前

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

    1 回复  |  直到 6 年前
        1
  •  5
  •   Mads Hansen    6 年前

    您的工作区保存在 应用程序服务 数据库。他们有一个 qconsole:workspace qconsole:userid 元素的用户ID。

    下面是一个查询,您可以运行该查询查找所有工作区,生成导出格式,然后将它们保存到 /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>
    )