본문 바로가기

IT/빅데이타

Oracle 데이터타입을 PostgreSQL로 자동 변환하는 방법 (Python + Pandas)

반응형

데이터 마이그레이션 작업에서, Oracle DB의 데이터타입이 적힌 엑셀 파일을 PostgreSQL용 데이터타입으로 변환해야 하는 경우가 많습니다.
이번 글에서는 Python과 Pandas를 이용해 A열에 있는 Oracle 타입을 기준으로 B열에 PostgreSQL 타입을 자동 채우는 방법을 정리했습니다.

import pandas as pd

# 엑셀 파일 경로
file_path = "데이터타입매핑.xlsx"

# 헤더 없는 경우 (엑셀 첫 행이 데이터일 때)
df = pd.read_excel(file_path, header=None)

# Oracle → PostgreSQL 매핑 함수
def map_type(oracle_type):
    oracle_type = str(oracle_type).upper()
    if oracle_type.startswith("VARCHAR2"):
        return "VARCHAR"
    elif oracle_type.startswith("CHAR"):
        return "CHAR"
    elif oracle_type == "NUMBER":
        return "NUMERIC"
    elif oracle_type == "DATE":
        return "TIMESTAMP"
    else:
        return oracle_type

# B열 생성 (0 = A열, 1 = B열)
df[1] = df[0].apply(map_type)

# 엑셀에 덮어쓰기
df.to_excel(file_path, index=False, header=False)

print("B열(PostgreSQL 타입) 자동 채우기 완료!")

 

  • header=None → 첫 행을 데이터로 인식
  • df[0] → A열 데이터
  • df[1] → B열(PostgreSQL 타입) 자동 생성
  • Oracle NUMBER → PostgreSQL NUMERIC (필요 시 INTEGER/BIGINT 세분화 가능)
  • 실행 후 엑셀 파일에 B열이 자동으로 채워집니다.
  • 헤더가 있는 경우: df = pd.read_excel(file_path) 후 df['Oracle_Type'] 형식으로 컬럼명 지정 가능
  • 데이터 타입 세분화:
    • 정수 ID → BIGINT
    • 소규모 정수 → INTEGER
    • 금액, 소수점 → NUMERIC(15,2)

 

결론

  • Excel → PostgreSQL 데이터타입 변환을 수작업으로 하지 않아도 됨
  • Python + Pandas로 자동화 가능
  • 누구나 쉽게 엑셀 파일만 준비하면 바로 적용 가능

 

반응형