subsoft
subsoft

Reputation: 99

How to save MarkLogic data in csv file using xdmp:save

I want to generate csv file. Code below creates csv file, but it fails to append data row per new line.

Am I missing anything?

Here is the code:

xquery version "1.0-ml";
let $filename := "D:\csv-reports\test.csv"

let $directory-query := cts:directory-query("/searcdoc/")
let $uris := cts:uris((), (), $directory-query)

for $uri in $uris
let $additional := doc($uri)/searcdoc/access/additional/text()
let $des := doc($uri)/searcdoc/std/text()
let $option := <options xmlns="xdmp:save"><method>text</method></options>
let $results := text{((fn:string-join(($uri, $des, $additional), ",")), "&#10;")}

return

xdmp:save($filename, $results, $option)

Upvotes: 2

Views: 1186

Answers (1)

Dave Cassel
Dave Cassel

Reputation: 8422

I think you just need to re-arrange the code a bit. Try this:

xquery version "1.0-ml";
let $filename := "D:\csv-reports\test.csv"

let $directory-query := cts:directory-query("/searcdoc/")
let $option := <options xmlns="xdmp:save"><method>text</method></options>
let $uris := cts:uris((), (), $directory-query)
let $lines := 
  for $uri in $uris
  let $additional := doc($uri)/searcdoc/access/additional/text()
  let $des := doc($uri)/searcdoc/std/text()
  return fn:string-join(($uri, $des, $additional), ",")

return
  xdmp:save($filename, text{ fn:string-join($lines, "&#10;") }, $option)

edited to change "\n" to "&#10;"

Upvotes: 1

Related Questions