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); });