Système d’exportation de données CSV Nodejs pour les utilisateurs

Je dois autoriser les utilisateurs à exporter leurs données au format CSV. J’ai écrit app dans nodejs. Les données d’exportation pour les utilisateurs peuvent être énormes. Donc je me demandais comment gérer une telle situation dans nodejs. Devrais-je utiliser process.nexttick ou api de processus enfant de nodejs? De plus, existe-t-il un bon module disponible pour que nodejs convertisse les données de mysql en csv.

lire ligne par ligne depuis votre mysql-db et append ligne par ligne à votre fichier

Je ne sais pas grand chose à propos de mysqlmodule, donc je suppose ici que chaque ligne est juste un tableau, donc le ‘row.join (‘; ‘)’. si ce n’est pas le cas (peut-être que c’est un object), vous devriez résoudre ce problème.

var fs = require('fs'); var connection = require('mysql').createConnection({yourdbsettingshere}); function processRow (row) { fs.appendFile('your-file.csv', row.join(';'), function (err) { connection.resume(); }); } var query = connection.query('SELECT * FROM WHATEVER'); query .on('error', function(err) { // do something when an error happens }) .on('fields', function(fields) { processRow(fields); }) .on('result', function(row) { // Pausing the connnection is useful if your processing involves I/O connection.pause(); processRow(row, function (err) { connection.resume(); }); }) .on('end', function() { // now you can mail your user }); 

si vous avez beaucoup de demandes, vous pouvez utiliser le module compute-cluster pour répartir votre charge de travail

La réponse acceptée ne fonctionne pas car les fichiers CSV sont séparés par , non ; . De plus, il n’y a pas de caractère de nouvelle ligne \n après la fin de chaque ligne et l’object fields contient des informations sur les column atsortingbutes non sur les data rows . results contient les lignes résultant de la requête. J’ai donc écrit mon propre code pour générer des fichiers CSV. Si vous avez besoin de plus d’explications, veuillez commenter, je fournirai.

 pool.query('SELECT * FROM category', function (error, results, fields) { var reportFile = Date.now(); fs.closeSync(fs.openSync(__dirname + '/../reports/' + reportFile + '.csv', 'w')); var atsortingbutes = []; var row = []; for(var x = 0; x