我想从csv文件中删除特定的列,然后使用mlcp将其加载到数据库中。
我的csv文件包含:
URI,EmpId,Name,age,gender,salary
1/Niranjan,1,Niranjan,35,M,1000
2/Deepan,2,Deepan,25,M,2000
3/Mehul,3,Mehul,28,M,3000
我想使用该URI列作为文档的uri,并且还应该在插入的文档中跳过/删除uri列。
怎么做?
答案 0 :(得分:4)
使用MLCP而不是在MarkLogic Data Hub上下文中的最佳选择是使用MLCP转换。您可以在此处找到一些解释和一些示例:
Transforming Content During Ingestion
如果要将CSV转换为JSON,则可以使用以下内容。
在模块数据库中将其另存为/strip-columns.sjs:
/* jshint node: true */
/* global xdmp */
exports.transform = function(content, context) {
'use strict';
/* jshint camelcase: false */
var stripColumns = (context.transform_param !== undefined) ? context.transform_param.split(/,/) : [];
/* jshint camelcase: true */
// detect JSON, assumes uri has correct extension
if (xdmp.uriFormat(content.uri) === 'json') {
// Convert input to mutable object for manipulation
var newDoc = content.value.toObject();
Object.keys(newDoc)
.map(function(key) {
if (stripColumns.indexOf(key) > -1) {
delete newDoc[key];
}
});
// Convert result back into a document
content.value = newDoc;
}
// return updated content object
return content;
};
然后您将使用类似这样的内容来调用它:
mlcp.sh import -input_file_path test.csv -input_file_type delimited_text -uri_id URI -document_type json -output_uri_prefix / -output_uri_suffix .json -output_collections data,type/csv,format/json -output_permissions app-user,read -transform_module /strip-columns.sjs -transform_param URI
HTH!