Как удалить столбец из CSV-файла при загрузке файла? - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу удалить конкретный столбец из файла 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 должны быть пропущены / удалены во вставленном документе.

Как это сделать ??

1 Ответ

0 голосов
/ 17 декабря 2018

Лучшая ставка при использовании MLCP, а не в контексте MarkLogic Data Hub, заключается в использовании преобразований MLCP.Вы можете найти некоторые объяснения и несколько примеров здесь:

Преобразование содержимого во время проглатывания

В случае, если вы конвертируете 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

НТН!

...