Проверьте наличие нуля / пробела при вставке в базу данных MarkLogic с помощью MLCP

Я изучаю базу данных MarkLogic и пытаюсь импортировать в нее данные с помощью контент-насоса MarkLogic. Вот суть CSV-файла.

firstname, middlename, lastname, address1, address2, city, state, zip, country
Rajath,,A,No 20 GN,16th cross,Bangalore,KA,560029,IN
Rajath1,,,No 75,,Dharwad,KA,560057,IN
Rajath2,,B,No 66,,Haveri,KA,560034,IN
Rajath3,,D,No 24A ,25th cross,Raichur,KA,560095,IN
Rajath4,,,No 36B,,Coorg,KA,,IN

Я успешно смог вставить его в БД. Вот вставленный документ.

{
    "firstname" : "Rajath4",
    "middlename" : "",
    "lastname" : "",
    "address1" : "No 36B",
    "address2" : "",
    "city" : "Coorg",
    "state" : "KA",
    "zip" : "",
    "country" : "IN"
}

Он даже вставляет значения, которые являются пустыми / нулевыми. Есть ли способ указать, чтобы игнорировать поля, которые являются пустыми / пустыми при вставке в ML? Вот то, что я ожидаю.

{
    "firstname" : "Rajath4",
    "address1" : "No 36B",
    "city" : "Coorg",
    "state" : "KA",
    "country" : "IN"
}

А также, как сохранить автоматически сгенерированную primary_key / sequence для каждого документа, который мы вставляем? Если идентификатор уже существует, он должен объединить / обновить документ.

Заранее спасибо.

2 ответа

Решение

Вы можете использовать пользовательское преобразование для фильтрации данных с вашим собственным кодом.

Кроме того, MLCP имеет возможность делать уникальный идентификатор - но за цикл, а не глобально. Но, к счастью, функция пользовательского преобразования позволяет вам также изменить URI, если хотите (поэтому вы предоставляете логику, чтобы сделать его уникальным) - решение обеих ваших проблем.

https://docs.marklogic.com/guide/mlcp.pdf

Соответствующие разделы:
- 4.17 - Пользовательские преобразования
- 4.17.5 - Пример преобразования (здесь добавьте свой код для фильтрации содержимого. В вашем случае вы можете предпочесть вызывать функцию в javascript. Но это все личный выбор.)
- 4.17.6 - Изменение URI

Интересная заметка 4.17.6 также включает в себя объяснение того, как изменить тип документа. Если вы человек xslt, вы можете решить, что MLCP предоставит XML, а затем шаблон для очистки пустых элементов, а затем в конце преобразует и сохраняет его в объект json.


Предупреждение: если вы используете MLCP с опцией fastload, то я думаю, что изменение URI сведет на нет преимущество fastload(или что-то в этом роде)

CSV недостаточно конкретен, чтобы различать пустую строку и неопределенную.

Например, выполняет ли следующий CSV

amount,type,category
1,,C

сопоставить с

{ "amount": 1, "type": null, "category": "C" }

или же

{ "amount": 1, "type": "", "category": "C" }

или же

{ "amount": 1, "category": "C" }

?

Если вы хотите получить больше контроля над тем, как анализируется CSV, другой вариант - предварительно обработать CSV в Java или Node.js и вставить полученные документы JSON или XML с помощью клиентских API Java или Node.js.

Другие вопросы по тегам