Exist db exist db从命令行导入文件

Exist db exist db从命令行导入文件,exist-db,Exist Db,我必须通过shell脚本使用命令行将大量xml文件导入existdb。有些文件可能已经存在,我不想覆盖这些文件。是否有命令行参数(或其他解决方案)使exist跳过并报告现有文件?我曾尝试浏览官方文档,但没有找到类似的内容。没错,eXist的命令行客户端不提供警告/禁用资源覆盖的功能。(请参阅客户文档,网址为。) 避免覆盖的最短路径是使用WebDAV客户端,该客户端在覆盖时发出警告,并为您提供处理此场景的选项。例如,我知道Transmit and oXygen XML编辑器会在存在可能被覆盖的资源

我必须通过shell脚本使用命令行将大量xml文件导入existdb。有些文件可能已经存在,我不想覆盖这些文件。是否有命令行参数(或其他解决方案)使exist跳过并报告现有文件?我曾尝试浏览官方文档,但没有找到类似的内容。

没错,eXist的命令行客户端不提供警告/禁用资源覆盖的功能。(请参阅客户文档,网址为。)

避免覆盖的最短路径是使用WebDAV客户端,该客户端在覆盖时发出警告,并为您提供处理此场景的选项。例如,我知道Transmit and oXygen XML编辑器会在存在可能被覆盖的资源/集合时向您发出警报。(在幕后,它们获取给定目录中的资源列表,然后在您尝试放置此名称的资源时向您发出警告。)

如果必须使用命令行,那么在继续之前,您需要某种方法列出远程集合或查询它是否存在资源。例如,如果将此查询存储到“check.xq”中,则可以将其作为
bin/client.sh-F check.xq运行:

doc-available("/db/my/collection/file.xml")
(: or for binary docs: 
      util:binary-doc-available("/db/my/collection/file.txt")
   or either XML documents or binary resources: 
      some $resource in xmldb:get-child-resources("/db/my/collection") satisfies $resource eq "file.xml" 
:)

eXist还支持ApacheAnt(请参阅)。虽然
xdb:store
没有控制覆盖的标志,但您可以编写一个ant脚本,先检查文件是否存在,然后再使用
xdb:exist
-报告现有文件和跳过。ant选项的好处在于,您可以将参数作为命令行参数传递给它,例如,
ant upload file-Ddir=/path/to-Dfile=file.xml-Dcollection=/db/my/collection
,您可以将服务器URL和凭据等参数存储在
build.properties
文件中。我还没有一个完整的示例,但是如果您对ant选项感兴趣,请尝试一下,如果您遇到任何问题,请在评论中告诉我。

哪个版本的eXist?您当前使用什么方法在shell脚本中上载文件?我使用的是最新的exist版本。用于导入的命令是bin/client.sh-m/db/my/collection-p/path/to/file.xml谢谢您的帮助。我可能会使用xquery,但我希望exist clent有一个我需要的选项。再次感谢你。