상세 컨텐츠

본문 제목

엑셀파일 등 DB 테이블 데이터 INSERT 시 반드시 체크할 12가지

IT/DB

by JR 2025. 11. 5. 15:13

본문

300x250
반응형

 

 

1. PK 컬럼은 절대 NULL 금지 + 유일성 보장

  • 엑셀에서 PK 컬럼이 빈 셀이면 → NULL이 들어감 → PK 제약 위반
  • 사전 작업: 엑셀에서 PK 컬럼에 =ISBLANK()로 빈 셀 확인 → 채우기
  • 자동 생성 PK라면: INSERT 시 DEFAULT 또는 시퀀스 사용 (수동 입력 금지)

2. 엑셀 컬럼 수 vs 테이블 컬럼 수 일치 확인

  • 엑셀: 15개 컬럼 → 테이블: 20개 컬럼 → 나머지 5개는 NULL로 들어감
  • 해결: INSERT 쿼리에서 명시적 컬럼 지정
    INSERT INTO table_name (col1, col2, col3, ...) VALUES (?, ?, ?, ...);

3. 컬럼 순서 꼼꼼히 매핑

  • 엑셀: 이름, 나이, 이메일
  • 테이블: email, name, age
  • → 순서 틀리면 데이터 왜곡
  • 해결: 스크립트/ETL 툴에서 컬럼 매핑 테이블 작성

4. 데이터 타입 일치 여부 확인

엑셀 예시 DB 타입 문제 발생
00123 INT 앞 0 사라짐
2025-03-01 DATE 형식 안 맞으면 에러
123-45-6789 VARCHAR 하이픈 포함 여부
  • 해결: 엑셀 → 텍스트로 강제 변환 후 검증

5. 중복 제거는 PK 기준이 아닌, 비즈니스 기준으로

  • "데이터 중복만 안 되면 된다" → 위험한 생각
  • 해결:
    • 엑셀에서 중복 제거 전용 키 조합으로 제거 (ex: 이름+이메일+생년월일)
    • DB에서는 INSERT ... ON DUPLICATE KEY UPDATE 또는 MERGE 사용

6. NULL vs 빈 문자열 구분

  • 엑셀 빈 셀 → '' (빈 문자열)로 들어갈 수 있음
  • 하지만 PK는 NULL도 안 되고, ''도 안 됨
  • 해결: 스크립트에서 NULLDEFAULT, ''NULL or 기본값 처리

7. 대량 INSERT 전 반드시 샘플 테스트

  • 100건 이하로 먼저 INSERT → SELECT로 결과 확인
  • 특히 PK, NOT NULL, FK 제약 위반 여부 확인

8. 트랜잭션 + 롤백 준비

START TRANSACTION;
-- INSERT 쿼리 실행
-- 문제 시 ROLLBACK;
COMMIT;

9. 외래키(FK) 제약 사전 검증

  • 참조하는 테이블에 해당 값이 있는지 확인
  • 엑셀에 없는 코드값 → FK 에러
  • 해결: 참조 테이블과 LEFT JOIN 후 NULL인 행 필터

10. 특수문자, 개행, 공백 처리

  • 엑셀에서 복사 붙여넣기 시 숨겨진 개행/탭/공백
  • 해결: TRIM(), REPLACE()로 전처리

11. INSERT 로그 남기기

  • 몇 건 INSERT됐는지, 실패한 건은 어떤 에러인지
  • 스크립트 예시 (Python):
    print(f"Inserted {success_count}, Failed {fail_count}")

12. 자동화 시 검증 로직 필수 포함

  • Python, Java, SSIS, Talend 등 사용 시
    • 스키마 검증 모듈
    • 데이터 검증 모듈 (필수값, 형식, 범위)
    • 에러 행 추출 기능

🔧 실수 복구 팁 (이미 PK에 NULL 들어간 경우)

  1. PK가 NULL인 행 확인
    SELECT * FROM your_table WHERE pk_column IS NULL;
  2. 임시 PK 부여 (자동 증가 시퀀스 있으면 활용)
    ALTER TABLE your_table ADD COLUMN temp_id INT AUTO_INCREMENT PRIMARY KEY FIRST;
  3. 기존 PK 컬럼 재생성 or 채우기
    • 비즈니스 규칙으로 PK 생성 가능하면 채우기
    • 불가능하면 → 새 테이블로 마이그레이션
  4. 인덱스/제약조건 일시 비활성화 후 작업
    ALTER TABLE your_table DISABLE KEYS;
    -- 작업 후
    ALTER TABLE your_table ENABLE KEYS;

체크리스트 요약 (출력해서 쓰세요!)

체크 항목 확인
PK 컬럼 빈 셀 없음
컬럼 수 일치
컬럼 순서 매핑 확인
데이터 타입 맞춤
중복 제거 기준 명확
샘플 INSERT 테스트
트랜잭션 사용
FK 값 존재 확인
특수문자 처리
로그 남김

 

300x250
반응형

관련글 더보기