refactor: rename asset_network to asset_remote
- DB 테이블명 변경 마이그레이션 스크립트 추가 (migrate_v5_rename_remote.js) - Backend (server.js): 쿼리 및 매핑 로직을 asset_remote 및 remotes 속성으로 업데이트 - Frontend (HWModal.ts): 폼 필드와 데이터 바인딩을 remotes로 일괄 수정 - 유틸리티 스크립트의 레퍼런스 일괄 업데이트
This commit is contained in:
59
backup_db.js
Normal file
59
backup_db.js
Normal file
@@ -0,0 +1,59 @@
|
||||
import mysql from 'mysql2/promise';
|
||||
import dotenv from 'dotenv';
|
||||
import * as xlsx from 'xlsx';
|
||||
import fs from 'fs';
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const { DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT } = process.env;
|
||||
|
||||
async function backup() {
|
||||
const connection = await mysql.createConnection({
|
||||
host: DB_HOST,
|
||||
user: DB_USER,
|
||||
password: DB_PASS,
|
||||
database: DB_NAME,
|
||||
port: parseInt(DB_PORT || '3306')
|
||||
});
|
||||
|
||||
console.log('🚀 Starting Database Backup Process...');
|
||||
|
||||
const tables = [
|
||||
'asset_pc', 'asset_server', 'asset_storage', 'asset_remote',
|
||||
'asset_equipment', 'asset_office_supplies', 'asset_survey', 'asset_vip'
|
||||
];
|
||||
|
||||
const wb = xlsx.utils.book_new();
|
||||
|
||||
for (const table of tables) {
|
||||
try {
|
||||
// 1. Create table backup
|
||||
await connection.query(`DROP TABLE IF EXISTS ${table}_backup`);
|
||||
await connection.query(`CREATE TABLE ${table}_backup AS SELECT * FROM ${table}`);
|
||||
console.log(`✅ Table backup created: ${table} -> ${table}_backup`);
|
||||
|
||||
// 2. Fetch data for Excel
|
||||
const [rows] = await connection.query(`SELECT * FROM ${table}`);
|
||||
if (rows.length > 0) {
|
||||
const ws = xlsx.utils.json_to_sheet(rows);
|
||||
// Sheet names max length is 31 chars
|
||||
const sheetName = table.substring(0, 31);
|
||||
xlsx.utils.book_append_sheet(wb, ws, sheetName);
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn(`⚠️ Skipped ${table}: ${e.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Write Excel file
|
||||
const fileName = 'backupDB_20260608.xlsx';
|
||||
xlsx.writeFile(wb, fileName);
|
||||
console.log(`✅ Excel data exported successfully to ${fileName}`);
|
||||
|
||||
await connection.end();
|
||||
}
|
||||
|
||||
backup().catch(err => {
|
||||
console.error('❌ Backup Failed:', err);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user