MYSQL에 20기가 자료를 업로드 하는데.. 쓰인 코드 > 논문

본문 바로가기

논문

MYSQL에 20기가 자료를 업로드 하는데.. 쓰인 코드

profile_image
민광석
2024-11-05 10:15 522 0 0
  • - 첨부파일 : g2bdbupall.py (1.6K) - 다운로드

본문

MYSQL에 20기가 자료를 업로드 하는데.. 쓰인 코드


CSV 파일 용량이 20기가가 되다보니 업로드에만 3시간넘게 걸리네...


charset 설정때문에 이틀 실패...후 성공


import pandas as pd
import pymysql
from sqlalchemy import create_engine
import glob
import os

# MySQL 연결 설정
db_config = {
    "host": "localhost",
    "user": "",
    "password": "",
    "database": "g2bsaledb",
    "charset": "utf8mb4"
}

# SQLAlchemy 엔진 생성
engine = create_engine(f"mysql+pymysql://{db_config['user']}:{db_config['password']}@{db_config['host']}/{db_config['database']}?charset=utf8mb4")

# CSV 파일들이 있는 디렉터리 설정
data_directory = ""  # 파일들이 있는 디렉토리 경로를 설정해 주세요

# CSV 파일을 읽고 데이터베이스에 저장
csv_files = glob.glob(os.path.join(data_directory, "*.csv"))
csv_files.sort(reverse=True)  # 파일명을 역순으로 정렬 (최근 연도부터 업로드)

for file_path in csv_files:
    file_name = os.path.basename(file_path)
    print(f"파일 업로드 중: {file_name}")
   
    try:
        # low_memory=False로 데이터 유형 추론을 개선, 계약번호와 업체사업자등록번호를 문자열로 변환
        df = pd.read_csv(file_path, encoding="euc-kr", low_memory=False)
       
        # 계약번호와 업체사업자등록번호를 문자열로 변환
       
        if '업체사업자등록번호' in df.columns:
            df['업체사업자등록번호'] = df['업체사업자등록번호'].astype(str)

        # MySQL로 데이터 업로드
        df.to_sql(name="g2b_data", con=engine, if_exists="append", index=False)
        print(f"{file_name} 업로드 완료")
    except Exception as e:
        print(f"{file_name} 업로드 실패: {e}")

print("모든 파일 업로드 완료!")
 
0
로그인 후 추천 또는 비추천하실 수 있습니다.

댓글목록0

등록된 댓글이 없습니다.
전체 2 건 - 1 페이지
번호
제목
글쓴이
민광석
2024-11-05
민광석
2024-11-05
게시판 전체검색