feat: implement synchronization logic for mouvements and statopca tables from MSSQL to PostgreSQL
This commit is contained in:
1 parent
90d1b1675c
commit
cb0b608edb
1 file changed
+4
-3
@@ -16,7 +16,7 @@ const MVTREG_COLS = [
|
|||||||
|
|
||||||
const CHUNK = 2000;
|
const CHUNK = 2000;
|
||||||
|
|
||||||
async function insertChunk(pg, table, rows, cols) {
|
async function insertChunk(pg, table, rows, cols, conflictTarget = null) {
|
||||||
if (!rows.length) return;
|
if (!rows.length) return;
|
||||||
const values = [];
|
const values = [];
|
||||||
const placeholders = rows.map((row, ri) => {
|
const placeholders = rows.map((row, ri) => {
|
||||||
@@ -26,8 +26,9 @@ async function insertChunk(pg, table, rows, cols) {
|
|||||||
});
|
});
|
||||||
return `(${ph.join(', ')})`;
|
return `(${ph.join(', ')})`;
|
||||||
});
|
});
|
||||||
|
const conflict = conflictTarget ? `ON CONFLICT (${conflictTarget}) DO NOTHING` : '';
|
||||||
await pg.query(
|
await pg.query(
|
||||||
`INSERT INTO ${table} (${cols.join(', ')}) VALUES ${placeholders.join(', ')} ON CONFLICT (no_id) DO NOTHING`,
|
`INSERT INTO ${table} (${cols.join(', ')}) VALUES ${placeholders.join(', ')} ${conflict}`,
|
||||||
values
|
values
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -78,7 +79,7 @@ async function syncMouvements(force) {
|
|||||||
|
|
||||||
let inserted = 0;
|
let inserted = 0;
|
||||||
for (let i = 0; i < allRows.length; i += CHUNK) {
|
for (let i = 0; i < allRows.length; i += CHUNK) {
|
||||||
await insertChunk(pg, 'mvtart', allRows.slice(i, i + CHUNK), MVTART_COLS);
|
await insertChunk(pg, 'mvtart', allRows.slice(i, i + CHUNK), MVTART_COLS, 'no_id');
|
||||||
inserted += Math.min(CHUNK, allRows.length - i);
|
inserted += Math.min(CHUNK, allRows.length - i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user