exist-db 从命令行导入文件
exist-db importing files from command line
我必须通过 shell 脚本使用命令行将一些 xml 文件导入 exist-db。有些文件可能已经存在,我不想覆盖这些文件。是否有命令行参数(或其他一些解决方案)使存在跳过并报告现有文件?我试过浏览官方文档,但我没有找到类似的东西。
你是对的,eXist 的命令行客户端不提供 warn/disable 覆盖资源的能力。 (请参阅 http://exist-db.org/exist/apps/doc/java-admin-client.xml#command-line 处的客户文档。)
避免覆盖的最短路径是使用 WebDAV 客户端,该客户端在覆盖时发出警告并为您提供处理这种情况的选项。例如,我知道 Transmit 和 oXygen XML 编辑器会在 resource/collection 存在将被覆盖时提醒您。 (在幕后,他们获取给定目录中的资源列表,然后在您尝试 PUT 时警告您,如果该名称的资源在列表中。)
如果命令行是必须的,那么在继续之前,您需要一些方法来列出远程集合或查询它是否存在资源。例如,如果您将此查询存储到 "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 还支持 Apache Ant(参见 http://exist-db.org/exist/apps/doc/ant-tasks.xml)。虽然 xdb:store
没有控制覆盖的标志,但您可以编写一个 ant 脚本,在使用 xdb:exist
存储文件之前先检查文件是否存在 - 报告现有文件并跳过。 ant 选项的好处是您可以将参数作为命令行参数传递给它,例如 ant upload-file -Ddir=/path/to -Dfile=file.xml -Dcollection=/db/my/collection
- 您可以将服务器 URL 和凭据等参数存储在 build.properties
文件。我没有准备好完整的示例,但如果您有兴趣使用 ant 选项,请尝试一下,如果您遇到任何问题,请在评论中告诉我。
我必须通过 shell 脚本使用命令行将一些 xml 文件导入 exist-db。有些文件可能已经存在,我不想覆盖这些文件。是否有命令行参数(或其他一些解决方案)使存在跳过并报告现有文件?我试过浏览官方文档,但我没有找到类似的东西。
你是对的,eXist 的命令行客户端不提供 warn/disable 覆盖资源的能力。 (请参阅 http://exist-db.org/exist/apps/doc/java-admin-client.xml#command-line 处的客户文档。)
避免覆盖的最短路径是使用 WebDAV 客户端,该客户端在覆盖时发出警告并为您提供处理这种情况的选项。例如,我知道 Transmit 和 oXygen XML 编辑器会在 resource/collection 存在将被覆盖时提醒您。 (在幕后,他们获取给定目录中的资源列表,然后在您尝试 PUT 时警告您,如果该名称的资源在列表中。)
如果命令行是必须的,那么在继续之前,您需要一些方法来列出远程集合或查询它是否存在资源。例如,如果您将此查询存储到 "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 还支持 Apache Ant(参见 http://exist-db.org/exist/apps/doc/ant-tasks.xml)。虽然 xdb:store
没有控制覆盖的标志,但您可以编写一个 ant 脚本,在使用 xdb:exist
存储文件之前先检查文件是否存在 - 报告现有文件并跳过。 ant 选项的好处是您可以将参数作为命令行参数传递给它,例如 ant upload-file -Ddir=/path/to -Dfile=file.xml -Dcollection=/db/my/collection
- 您可以将服务器 URL 和凭据等参数存储在 build.properties
文件。我没有准备好完整的示例,但如果您有兴趣使用 ant 选项,请尝试一下,如果您遇到任何问题,请在评论中告诉我。