import { readFileSync, writeFileSync } from 'fs'; let sql = readFileSync('dump-fixed.sql', 'utf8'); // unistr('\uXXXX') -> plain UTF-8 string sql = sql.replace(/unistr\('((?:[^'\\]|\\.)*)'\)/g, (_, inner) => { const decoded = inner.replace(/\\u([0-9a-fA-F]{4})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)) ); return `'${decoded}'`; }); // ROLLBACK at end of corrupt dump -> COMMIT so import doesn't discard everything sql = sql.replace(/^ROLLBACK;.*$/m, 'COMMIT;'); writeFileSync('dump-fixed2.sql', sql, 'utf8'); console.log('done');