78 lines
2.2 KiB
JavaScript
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);
|
|
});
|