Как узнать, закончил ли анализатор XML файл анализа? - PullRequest
0 голосов
/ 24 сентября 2018

Я анализирую файл размером 2 ГБ + xml, первоначально я обрабатываю (многопоточные) записи одну за другой.

Но одиночный SQL-запрос на вставку в БД слишком медленный (горлышко бутылки БД), поэтому мне нужносоздайте файл массовой вставки запроса / cvs после просмотра XML-документа.Но в отличие от java, в nodejs я не могу сказать, были ли документы полностью проанализированы.

Работал над этим в течение 12 часов +, было бы здорово, если кто-нибудь может мне помочь.Возможно, попробуйте другие библиотеки XML?или просто используйте старый добрый Java.

 var bigXml = require('big-xml');  
     reader = bigXml.createReader('dblp.xml', /^(article)$/, { gzip: false });

 var count = 0;
  var temp = [];
  reader.on('record', async function (record) {

  console.log("Processing article:" + count);

  count++;

   var pubBody = importPubBuilder(record); 
   temp.push(pubBody);
  //taking temp Array to csv when finish reading file

  });

  reader.on('error', function (err) {
    console.log(err);
  });

function importPubBuilder(record) {

  var body = {};
  body.pubkey = record.attrs.key;
  body.mdate = record.attrs.mdate;
  body.title = null;
  body.ee = null;
  body.url = null;

  if (record.children.find(obj => {    return obj.tag == "title"  }) != null)  {
    body.title = record.children.find(obj => {    return obj.tag == "title"  }).text;
  }

  if( record.children.find(obj => {    return obj.tag == "ee"  }) != null){
    body.ee =record.children.find(obj => {    return obj.tag == "ee"  }).text
  }
  if( record.children.find(obj => {    return obj.tag == "url"  }) !=null){
    body.url = record.children.find(obj => {    return obj.tag == "url"  }).text
  }

  return body

}

1 Ответ

0 голосов
/ 10 января 2019

Обновлен добавленный источник событий закрытия при закрытии потока файлов.Вилка с улучшением в npm big-xml-notify link

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...