Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 1x 1x 1x 1x 1x 1x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 20005x 20005x 40016x 20005x 20005x 29x 29x 29x 20x 20x 9x 9x 1x | const Promise = require('bluebird');
const fs = require('fs');
const path = require('path');
const jsonStream = require('JSONStream');
const debug = require('debug')('express-cassandra');
const exporter = {
processTableExport(systemClient, fixtureDirectory, keyspace, table) {
debug('==================================================');
debug(`Reading table: ${table}`);
return new Promise((resolve, reject) => {
const jsonfile = fs.createWriteStream(path.join(fixtureDirectory, `${table}.json`));
jsonfile.on('error', (err) => {
reject(err);
});
let processed = 0;
const startTime = Date.now();
jsonfile.on('finish', () => {
const timeTaken = (Date.now() - startTime) / 1000;
const throughput = timeTaken ? processed / timeTaken : 0.00;
debug(`Done with table, throughput: ${throughput.toFixed(1)} rows/s`);
resolve();
});
const writeStream = jsonStream.stringify('[', ',', ']');
writeStream.pipe(jsonfile);
const query = `SELECT * FROM "${keyspace}"."${table}"`;
const options = { prepare: true, fetchSize: 1000 };
systemClient.eachRow(query, [], options, (n, row) => {
const rowObject = {};
row.forEach((value, key) => {
rowObject[key] = value;
});
processed++;
writeStream.write(rowObject);
}, (err, result) => {
Iif (err) {
reject(err);
return;
}
debug(`Streaming ${processed} rows to: ${table}.json`);
if (result.nextPage) {
result.nextPage();
return;
}
debug(`Finalizing writes into: ${table}.json`);
writeStream.end();
});
});
},
};
module.exports = exporter;
|