Hello Christian,
thank you for the fast reply.
With your example I will actually make a db:replace() call for each file.
I've choosen the approach with just passing the directory to db:replace() for performance reasons. My experience is that this call is extremely fast even for a large number of files (let's say > 30.000).
Will the iterative approach have a comparable performance? Or are there some optimizations for directory structures in db:replace().
Thanks Johannes
Am 11.04.2019 um 09:33 schrieb Christian GrĂ¼n:
Hi Johannes,
We allow file paths for db:add and db:replace as a basic convenience feature. To have full control over your imports, it is often better to work with the functions provided by the File Module. Herre is a simple example that might already cover your requirements (provided that the input directory contains only XML documents):
let $root := '/path/to/your/files/' for $path in file:list($root, true()) return db:replace('your-db', $path, $root || $path)
Hope this helps, Christian
On Thu, Apr 11, 2019 at 9:13 AM Johannes Bauer johannes.bauer@tanner.de wrote:
Hi,
this may seem like a dumb question, but how can I add & replace a number of documents in a database?
I have a directory with some files that I want to import. Some of the documents may already exist in the database.
If I use the db:replace('db', '', '/path/to/my/files') function it adds the missing docs and overwrites the existing ones. But it also deletes all other documents from the database.
I cannot work with db:add() because it does not overwrite existing docs.
Any suggestions?
Best regards Johannes