В настоящее время я пытаюсь заполнить таблицу cassandra содержимым файла xlsx, но столкнулся с проблемой.
Мне удалось создать массив со всеми запросами, необходимыми для заполнения моей таблицы.(«вставить в my_table (values name, ...) values (values, ...);»).Таким образом, мой массив получил около 7000 строк.
Затем я выполняю обещание, и в этом обещании я сделал цикл для заполнения и массив обещаний, чтобы вызвать первое обещание, когда все обещания закончены.
это код, который я сделал
index.js =>
const ImportFileContent = require("./scripts/import_file_content")
const InsertDb = require("./scripts/insertDb")
const cassandra = require('cassandra-driver');
const databaseConfig = require('./config/database.json');
const authProvider = new cassandra.auth.PlainTextAuthProvider(databaseConfig.cassandra.username, databaseConfig.cassandra.password);
const db = new cassandra.Client({
contactPoints: databaseConfig.cassandra.contactPoints,
authProvider: authProvider
});
// ImportFileContent.importFileContent return an array of string, those strings contains all the 7000+ queries
ImportFileContent.importFileContent().then(queries => {
InsertDb.clients(db, queries).then(result => {
console.log(result);
db.shutdown(function (err, result) {
});
});
});
insertDb.js =>
let DB = null;
module.exports = {
ClientsLeasing: function (db, queries) {
DB = db;
return insertClientsLeasing(queries);
}
}
function insertClientsLeasing(queries) {
return new Promise((resolve, reject) => {
let nbError = 0;
let nbSuccess = 0;
let promisesArray = [];
//I made i <2000 here because my cassandra setup doesn't manage more than 2048 request in parallele
for (let i = 0; i < 2000; i++) {
promisesArray.push(new Promise(function (resolve, reject) {
DB.execute(queries[i], function (err, result) {
if (err) {
nbError++;
reject(err)
} else {
nbSuccess++;
resolve();
}
});
}));
}
Promise.all(promisesArray).then((result) => {
console.log("is over")
console.log("over ===================== success => ", nbSuccess, " errors => ", nbError);
resolve("success");
}).catch((error) => {
console.log(error);
console.log("is over error")
console.log("over ===================== success => ", nbSuccess, " errors => ", nbError);
resolve("error");
});
});
}
Моя таблица получила два основныхзадает дату создания (которая теперь ()) и идентификатор клиента, который может быть в нескольких строках xlsx (что может быть источником проблемы?).
Так что теперь, когда я запускаю этот код, мойвывод
, тогда, когда я делаю подсчет в таблице через cqls, я получаю только 1962 строки с этим выводом
Мне кажется, что я что-то упускаю из-за того, что использую свои обещания.Я действительно не понимаю.
Спасибо