const sqlite3 = require('sqlite3').verbose(); const path = require('path'); const dbPath = path.join(__dirname, 'company_finance.db'); const db = new sqlite3.Database(dbPath); console.log('从备份表恢复商品数据...'); // 检查products_backup表是否存在 db.get("SELECT name FROM sqlite_master WHERE type='table' AND name='products_backup'", (err, row) => { if (err) { console.error('检查备份表失败:', err.message); db.close(); return; } if (!row) { console.log('备份表不存在,无法恢复数据'); db.close(); return; } // 检查备份表中的数据量 db.get('SELECT COUNT(*) as count FROM products_backup', (err, row) => { if (err) { console.error('检查备份数据失败:', err.message); db.close(); return; } console.log(`备份表中有 ${row.count} 条商品数据`); if (row.count > 0) { console.log('开始从备份表恢复数据...'); // 从备份表恢复数据到主表 db.run(` INSERT INTO products ( name, model, category_id, category_name, unit, cost_price, price, brand, specification, source, remark, stock_quantity, stock_warning, status, created_at, updated_at ) SELECT name, model, category_id, category_name, unit, cost_price, price, brand, specification, source, remark, stock_quantity, stock_warning, status, created_at, updated_at FROM products_backup `, function(err) { if (err) { console.error('恢复数据失败:', err.message); db.close(); return; } console.log(`成功恢复 ${this.changes} 条商品数据`); // 验证恢复结果 db.get('SELECT COUNT(*) as count FROM products', (err, row) => { if (err) { console.error('验证失败:', err.message); } else { console.log(`恢复后商品表中有 ${row.count} 条数据`); } db.close(); }); }); } else { console.log('备份表为空,无法恢复数据'); db.close(); } }); });