let productsStream = fs.createReadStream('products.csv')
productsStream
.pipe(csv({ separator: ';' }))
.on('data', (data) => {
const {sku, ...attributes} = data;
(async () => {
const db = await sqlite.open({
filename: 'products.db',
driver: sqlite3.Database
})
const {productId} = await db.get('SELECT id AS productId FROM products WHERE sku = ?', sku);
console.log('CURRENT PARSING SKU:', sku);
for (let key in attributes) {
if (attributes[key].length) {
const {attributeId} = await db.get('SELECT id AS attributeId FROM attributes WHERE name = ?', key),
attributeValue = attributes[key];
try {
const result = await db.run(
'INSERT INTO prod_attrs (product_id, attribute_id, value) VALUES (?, ?, ?)',
[productId, `${attributeId}`, `${attributeValue}`]
)
} catch (e) {
console.log('ERROR: ', e);
fs.appendFileSync('error_logs.txt', `\n ${e}`);
}
}
}
await db.close();
})()
})
.on('end', () => {
console.log('finished');
const finish = Date.now();
console.log(finish - start);
})
.on('close', () => {
console.log('destroyed')
})
bGV0IHByb2R1Y3RzU3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbSgncHJvZHVjdHMuY3N2JykKcHJvZHVjdHNTdHJlYW0KICAucGlwZShjc3YoeyBzZXBhcmF0b3I6ICc7JyB9KSkKICAub24oJ2RhdGEnLCAoZGF0YSkgPT4gewogICAgICBjb25zdCB7c2t1LCAuLi5hdHRyaWJ1dGVzfSA9IGRhdGE7CgogICAgICAoYXN5bmMgKCkgPT4gewogICAgICAgICAgY29uc3QgZGIgPSBhd2FpdCBzcWxpdGUub3Blbih7CiAgICAgICAgICAgICAgZmlsZW5hbWU6ICdwcm9kdWN0cy5kYicsCiAgICAgICAgICAgICAgZHJpdmVyOiBzcWxpdGUzLkRhdGFiYXNlCiAgICAgICAgICB9KQoKICAgICAgICAgIGNvbnN0IHtwcm9kdWN0SWR9ID0gYXdhaXQgZGIuZ2V0KCdTRUxFQ1QgaWQgQVMgcHJvZHVjdElkIEZST00gcHJvZHVjdHMgV0hFUkUgc2t1ID0gPycsIHNrdSk7CgogICAgICAgICAgY29uc29sZS5sb2coJ0NVUlJFTlQgUEFSU0lORyBTS1U6Jywgc2t1KTsKCiAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gYXR0cmlidXRlcykgewogICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzW2tleV0ubGVuZ3RoKSB7CgogICAgICAgICAgICAgICAgICBjb25zdCB7YXR0cmlidXRlSWR9ID0gYXdhaXQgZGIuZ2V0KCdTRUxFQ1QgaWQgQVMgYXR0cmlidXRlSWQgRlJPTSBhdHRyaWJ1dGVzIFdIRVJFIG5hbWUgPSA/Jywga2V5KSwKICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlc1trZXldOwoKICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRiLnJ1bigKICAgICAgICAgICAgICAgICAgICAgICAgICAnSU5TRVJUIElOVE8gcHJvZF9hdHRycyAocHJvZHVjdF9pZCwgYXR0cmlidXRlX2lkLCB2YWx1ZSkgVkFMVUVTICg/LCA/LCA/KScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2R1Y3RJZCwgYCR7YXR0cmlidXRlSWR9YCwgYCR7YXR0cmlidXRlVmFsdWV9YF0KICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0VSUk9SOiAnLCBlKTsKICAgICAgICAgICAgICAgICAgICAgIGZzLmFwcGVuZEZpbGVTeW5jKCdlcnJvcl9sb2dzLnR4dCcsIGBcbiAke2V9YCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgYXdhaXQgZGIuY2xvc2UoKTsKICAgICAgfSkoKQoKICB9KQogIC5vbignZW5kJywgKCkgPT4gewogICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkJyk7CgogICAgY29uc3QgZmluaXNoID0gRGF0ZS5ub3coKTsKICAgIGNvbnNvbGUubG9nKGZpbmlzaCAtIHN0YXJ0KTsKCiAgfSkKICAgIC5vbignY2xvc2UnLCAoKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2Rlc3Ryb3llZCcpCiAgICB9KQ==