MarkLogicサーバー内のプロジェクトフォルダ全体をコピーしなければならず、手動で行う代わりに、再帰関数を使用することにしましたが、これまでになかった最悪の考えになりつつあります。私はトランザクションと構文に問題がありますが、新しいものでは解決する真の方法は見つけられません。ここで私のコードは、助けてくれてありがとう!XQueryを使用したフォルダの再帰的コピー
import module namespace dls = "http://marklogic.com/xdmp/dls" at "/MarkLogic/dls.xqy";
declare option xdmp:set-transaction-mode "update";
declare function local:recursive-copy($filesystem as xs:string, $uri as xs:string)
{
for $e in xdmp:filesystem-directory($filesystem)/dir:entry
return
if($e/dir:type/text() = "file")
then dls:document-insert-and-manage($e/dir:filename, fn:false(), $e/dir:pathname)
else
(
xdmp:directory-create(concat(concat($uri, data($e/dir:filename)), "/")),
local:recursive-copy($e/dir:pathname, $uri)
)
};
let $filesystemfolder := 'C:\Users\WB523152\Downloads\expath-ml-console-0.4.0\src'
let $uri := "/expath_console/"
return local:recursive-copy($filesystemfolder, $uri)
によってあなたはどのように多くの文書をコピーしていますか?データセットが非常に大きい場合、優れたソリューションが狭くなります。また、あなたはdlsが必要ですか? good-ol xdmp:document-insertを使ってもいいですか? –
@ SamMeffordまあ、私はUIコンソールとして機能するネストされたプロジェクト全体をコピーしようとしています。そのため、xdmp:document-insertだけを使用すると、サーバー自体の中のファイルとフォルダの階層を見ることができません。いいえ、私はdlsについてはわかりません、私はちょうど解決策を見つけようとしています。また、mlcpコマンドを使用しようとしましたが、サーバーに到達できません。 – MissArmstrong