// 一键运行所有数据库检查脚本 const { exec } = require('child_process'); const path = require('path'); const fs = require('fs'); // 定义脚本路径 const postgresScriptPath = path.join(__dirname, 'postgres-schema.js'); const clickhouseScriptPath = path.join(__dirname, 'clickhouse-schema.js'); // 定义输出目录 const DB_REPORTS_DIR = '/Users/liam/code/promote/backend/db-reports'; // 确保目录存在 if (!fs.existsSync(DB_REPORTS_DIR)) { fs.mkdirSync(DB_REPORTS_DIR, { recursive: true }); console.log(`创建输出目录: ${DB_REPORTS_DIR}`); } // 定义日期时间格式化函数,用于生成日志文件名 function getTimestampString() { return new Date().toISOString().replace(/[:.]/g, '-'); } // 运行PostgreSQL脚本 async function runPostgresScript() { return new Promise((resolve, reject) => { console.log('\n======================================='); console.log('正在运行PostgreSQL数据库结构检查脚本...'); console.log('=======================================\n'); const process = exec(`node --no-inspect ${postgresScriptPath}`, (error, stdout, stderr) => { if (error) { console.error(`PostgreSQL脚本运行出错: ${error.message}`); reject(error); return; } if (stderr) { console.error(`PostgreSQL脚本错误: ${stderr}`); } console.log(stdout); resolve(); }); }); } // 运行ClickHouse脚本 async function runClickHouseScript() { return new Promise((resolve, reject) => { console.log('\n======================================='); console.log('正在运行ClickHouse数据库结构检查脚本...'); console.log('=======================================\n'); const process = exec(`node --no-inspect ${clickhouseScriptPath}`, (error, stdout, stderr) => { if (error) { console.error(`ClickHouse脚本运行出错: ${error.message}`); reject(error); return; } if (stderr) { console.error(`ClickHouse脚本错误: ${stderr}`); } console.log(stdout); resolve(); }); }); } // 主函数 async function main() { try { console.log('开始运行所有数据库结构检查脚本...'); console.log(`输出目录: ${DB_REPORTS_DIR}`); console.log(`时间戳: ${getTimestampString()}`); // 运行PostgreSQL脚本 await runPostgresScript(); // 运行ClickHouse脚本 await runClickHouseScript(); console.log('\n======================================='); console.log('所有数据库结构检查脚本已完成!'); console.log('报告已保存到以下目录:'); console.log(DB_REPORTS_DIR); console.log('======================================='); } catch (error) { console.error('运行脚本时出错:', error); process.exit(1); } } // 执行主函数 if (require.main === module) { main().catch(error => { console.error('运行脚本时出错:', error); process.exit(1); }); }