102 lines
3.0 KiB
JavaScript
102 lines
3.0 KiB
JavaScript
// 一键运行所有数据库检查脚本
|
|
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);
|
|
});
|
|
}
|