Загрузите файл CSV в базу данных контента с коллекцией, используя corb
У меня есть файл CSV в моей локальной папке. Я хочу загрузить этот файл в MarkLogic DB, используя CoRB в указанную коллекцию. Можете ли вы помочь?
1 ответ
Возможно, вы захотите настроить свою работу на использование опции URIS-FILE, указывающей на ваш CSV. CORB прочитает файл и отправит каждую из строк из CSV в сконфигурированный МОДУЛЬ ПРОЦЕССА как $URI
значение для обработки.
Файл свойств будет выглядеть примерно так:
# how to connect to to the XCC server
XCC-CONNECTION-URI=xcc://user:password@localhost:8202/
# path to the CSV file to be processed
URIS-FILE=input-uris.csv
# the module that will process and save each CSV row
PROCESS-MODULE=save-row.xqy|ADHOC
# how many threads to use to execute process modules
THREAD-COUNT=10
В вашем модуле процесса вам нужно будет объявить внешнюю переменную $URIS
, а затем токенизируйте строку CSV с помощью разделителя и обрабатывайте столбцы данных. взывать xdmp:document-insert()
вставить документ и указать коллекцию (и), в которую вы хотите поместить документ:
xquery version "1.0-ml";
declare variable $URI as xs:string external;
let $columns := fn:tokenize($URI, ",\s?")
(: assuming that the first column has a unique value to be used for the URI :)
let $uri := $columns[1]
(:do whatever processing you would need to generate the document from CSV columns :)
let $content := $columns[2]
return
xdmp:document-insert($uri,
$content,
map:map() => map:with("collections", "mySpecialCollection")
)
Примечание: подпись для xdmp:document-insert() недавно изменилась. Вы сейчас указываете xdmp:document-insert
параметры, такие как разрешения и коллекции, в карте или элементе параметров в третьем параметре. В предыдущих версиях MarkLogic разрешения и коллекции были третьим и четвертым параметрами. Настройте вызов на xdmp:document-insert()
в соответствии с используемой версией MarkLogic (в верхней левой части документации есть выпадающий список для выбора вашей версии).