[대구 빅데이터 분석 경진대회] 클라우드 데이터베이스 구축과 데이터 적재

2025. 8. 4. 00:33카테고리 없음

데이터 수집까지 진행했으면 그 다음은 클라우드에서 데이터베이스를 만들차례이다. 

데이터를 수집하면 바로 데이터베이스에 업로드하여 로컬 메모리 용량을 절약할수있고, 협업을 진행한다면 각자 수집한 데이터를 데이터베이스에 올려 바로 공유하도록 할 수있어 장점이 있다.

 

내가 주로 클라우드를 사용할때는 Render 클라우드를 사용하고 있다. 무료로 많은 데이터베이스 용량을 사용할 수 있고, 사용법이 간편하여 사용하고있다. 

AWS는 과금의 리스크가 있고, Firebase는 NoSQL 를 베이스로 하고있어, csv파일을 적재가 불편하여 제외하였다.

 

Render에서 Add New 버튼을 통해 PostgreSQL 데이터베이스를 생성하였다.

 

데이터베이스 생성

데이터 적재 코드

import pandas as pd
import os
from sqlalchemy import create_engine

# 1. 데이터베이스 연결
DATABASE_URL = "EXTERNAL URL"
engine = create_engine(DATABASE_URL)

# 2. CSV 폴더 경로
csv_dir = r"Desktop\대구시 산업 데이터 분석\데이터"

# 3. 폴더 내 모든 CSV 파일 반복
for file in os.listdir(csv_dir):
    if file.endswith('.csv'):
        file_path = os.path.join(csv_dir, file)
        try:
            # 인코딩 자동 감지
            try:
                df = pd.read_csv(file_path, encoding='utf-8')
            except UnicodeDecodeError:
                df = pd.read_csv(file_path, encoding='cp949')
            
            # 컬럼명 정리
            df.columns = [col.strip().replace(" ", "_").replace("(", "").replace(")", "").lower() for col in df.columns]
            
            # 파일명에서 확장자 제거 → 테이블명
            table_name = os.path.splitext(file)[0].lower().replace(" ", "_")
            
            # 업로드
            df.to_sql(table_name, engine, index=False, if_exists='replace')
            print(f"{file} → {table_name} 업로드 완료")
        except Exception as e:
            print(f"{file} 업로드 실패: {e}")

 

데이터를 업로드할때는 External URL을 사용해서 데이터베이스와 통신을 한다.

로컬에 저장되어있는 csv파일의 경로를 통해서 데이터를 가져와 데이터베이스에 저장하는 방식이다.

칼럼명은 특수문자는 빼고 파일명에서 확장자명은 빼는 과정을 통해서 데이터를 전처리 해준다.

 

데이터 불러오기

# 테이블 불러오기
table_name = "구간별_시간별_통계"
traffic_stats_df = pd.read_sql_table(table_name, con=engine)

# 데이터 확인
print(traffic_stats_df.head())

결과값

 

이렇게 데이터를 불러와서 또는 필요한 데이터만 불러와 전처리 및 분석을 진행할 예정이다.