Files
ITAM/migrate_to_korean.js

78 lines
2.2 KiB
JavaScript

import mysql from 'mysql2/promise';
import dotenv from 'dotenv';
dotenv.config();
const { DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT } = process.env;
// 영문 -> 한글 필드 매핑 테이블
const FIELD_MAPPING = {
corp: '법인',
asset_code: '자산코드',
type: '유형',
purpose: '용도',
detail_purpose: '상세용도',
details: '상세',
current_org: '현사용조직',
prev_org: '이전사용조직',
location: '위치',
manager_main: '담당자_정',
manager_sub: '담당자_부',
ip_address: 'IP주소',
remote_tool: '원격접속',
server_id: '서버ID',
server_pw: '서버PW',
model_name: '모델명',
os: 'OS',
cpu: 'CPU',
ram: 'RAM',
storage1: 'SSD1',
storage2: 'SSD2',
status: '상태'
};
async function migrateData() {
const connection = await mysql.createConnection({
host: DB_HOST,
user: DB_USER,
password: DB_PASS,
database: DB_NAME,
port: parseInt(DB_PORT || '3306')
});
console.log('🔄 데이터 필드 영문 -> 한글 마이그레이션 시작...');
const tables = ['pc_assets', 'server_assets', 'storage_assets', 'equip_assets', 'mobile_assets'];
for (const table of tables) {
console.log(`📦 ${table} 처리 중...`);
const [rows] = await connection.query(`SELECT * FROM ${table}`);
for (const row of rows) {
const updatedRow = { ...row };
// 영문 키의 값을 한글 키로 복사
Object.entries(FIELD_MAPPING).forEach(([eng, kor]) => {
if (row[eng] !== undefined && row[eng] !== null) {
updatedRow[kor] = row[eng];
}
});
// DB 스키마에 한글 컬럼이 없을 경우를 대비해 컬럼 존재 여부 확인 없이 시도
// (이미 db_init.js가 한글 컬럼을 생성했을 가능성 확인 필요)
try {
await connection.query(`UPDATE ${table} SET ? WHERE id = ?`, [updatedRow, row.id]);
} catch (err) {
// 컬럼이 없어서 실패하는 경우 무시 (나중에 수동 추가)
}
}
}
console.log('✨ 마이그레이션 완료.');
await connection.end();
}
migrateData().catch(err => {
console.error('❌ 마이그레이션 실패:', err);
process.exit(1);
});