NODE.JS: ERRORE FATALE – JS Allocation failed – processo di memoria, mentre l’analisi di grandi file di excel

Sto usando nodejs per analizzare i file xlsx con il modulo “jsxlsx_async” e i valori saranno memorizzati nel database.
Il mio codice:

    xlsx(file, function(err,wb){
        if (err){
            //handling err
        }
        //get data array 
        wb.getSheetDataByName('Sheet1', function(err,data){
            if (err){
                //handling err
            }
            //handling data
            console.log(data);
        });
    });

Utilizzando: Nodejs: v0.10.25, MongoDB: v2.2.6,
OS: win8, RAM:6GB

I miei passi:
1.leggi caricato file xlsx e salvare la vita di coloro leggere i valori in un JS oggetto.
2.Salvare il leggere i valori in mongodb collezioni scorrendo i valori di JS oggetto.

Questo funziona bene con i più piccoli xlsx file, ma ho voluto analizzare xlsx file di dimensioni superiori a 50 MB.

Il mio problema è che dove sto memorizzare l’intera xlsx valori in un unico JS oggetto.
Si prega di fornire alcune idee per una soluzione.
C’è un modo migliore per leggere xlsx per riga e salvare i valori in una sola volta una riga viene letta?

InformationsquelleAutor bijin-ab | 2014-02-21



One Reply
  1. 45

    Ho avuto un problema simile prima. Ho bisogno di leggere un enorme oggetto JSON da un file txt, ma il processo è stato ucciso perché ha esaurito la memoria. Per quanto riguarda questo problema, la mia soluzione è stata quella di dividere file di grandi dimensioni in 2 file.

    Quanto riguarda il tuo problema, i miei suggerimenti sono:

    1. Cercare di aumentare il limite di memoria del motore v8. https://github.com/joyent/node/wiki/FAQ Esempio (8192 significa 8GB):

      node --max-old-space-size=8192 server.js 
    2. Se #1 non funziona, provare a leggere xlsx file riga per riga con questo lib: https://github.com/ffalt/xlsx-extract

    3. Se #1, #2 non funziona, provare a https://github.com/extrabacon/xlrd-parser

    • #1 non funziona perché voglio usare solo max 3 gb della mia RAM #2 a 1) installare l’ .NET Framework 2.0 SDK, 2) installazione di Microsoft Visual Studio 2005, che io non voglio fare su cloud server #3 non funziona su windows. Qualcuno sa come usare/installare il modulo “xlrd parser” in windows?
    • Grazie, il modulo “xlsx-estratto” funziona molto bene con installato visual studio.

Lascia un commento