ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] SQLite3 DB 적재 2회차
    DB 2023. 6. 8. 13:58
    728x90

    지난 1회차에서 DB에 깡통 테이블을 만들었었죠!

     

    이번에는 깡통 테이블에 데이터를 적재하는 방법에 대해 알아보겠습니다!

     

    # 사용자 정의 객체
    file_path = r"C:/Users/sdjeo/OneDrive/바탕 화면/"
    
    # DB테이블 생성 : 1. 고객정보
    # 1-1. CSV 추출 및 변환
    # 데이터 추출
    customer_data = pd.read_csv(f"{file_path}/CUSTOMER.csv")
    
    # 컬럼명 Rename
    df = (
        customer_data
            .rename(columns = {
                  "CUST_ID"                 : '고객번호'
                , "LAST_NAME"               : '성'
                , "FIRST_NAME"              : '이름'
                , "GENDER"                  : '성별'
                , "AGE"                     : '나이'
                }
            )
    )
    

    먼저, csv파일로 저장된 데이터를 로드한 후 변수명을 변경해줍니다.

     

     
                    고객번호                                 성                                             이름                          나이                    성별
    1161115 Re**** Laurel 30 Male
    1168350 Su**** Otto 27 Male
    1161269 Kl******** Ta-Heng 44 Male
    1161657 Ro**** Bhadrabuja 65 Male
    1161937 Ly***** Candrin 49 Male
    ... ... ... ... ...
    1254229 Od** Reba 71 Female
    1254576 P¿******** Leonore 47 Male
    1037053 Ho**** Federico 45 Male
    1037261 Pe********* Najia 51 Female
    1037854 Ca**** Hugh 66 Male

    4749 rows × 5 columns

     

    이 후, 데이터 초기화 및 적재를 수행합니다.

    고객번호를 기준으로 중복 제거를 한 후, 데이터를 CUSTOMER_INFO 테이블에 밀어넣습니다.

    con : 데이터베이스 연결 객체(engine)를 지정
    if_exists: 테이블이 이미 존재할 경우의 동작을 설정 / 'append' : 기존 테이블에 데이터를 추가합니다.

    index: 인덱스 컬럼을 테이블에 적재하지 않도록 설정
    method: 데이터를 적재하는 방법을 설정 / 'multi'로 설정하면 데이터를 일괄적으로 적재
    chunksize: 한 번에 적재되는 데이터의 크기(chunk)를 설정 / 10000으로 설정되어 있으므로 10000개의 행 단위로 데이터를 적재

    즉, 아래 코드는 'CUSTOMER_INFO' 테이블에서 모든 데이터를 삭제한 후, 데이터프레임(df)에서 중복된 '고객번호'를 제거한 데이터를 'CUSTOMER_INFO' 테이블에 추가로 적재합니다.

     

    # 1-2. DB적재
    # 데이터 초기화
    cur.execute("""delete from CUSTOMER_INFO""")
    
    # 데이터 적재
    df.drop_duplicates(['고객번호']).to_sql(
          name      = f'CUSTOMER_INFO'
        , con       = engine
        , if_exists = 'append'
        , index     = False
        , method    = "multi"
        , chunksize = 10000
    )
    
    [LOG] DF 건수 = 4,749, DB DF 건수 = 4,749
     

     

    최종적으로, 데이터건수와 적재된 데이터 건수를 비교합니다

    'DB' 카테고리의 다른 글

    [Python] SQLite3 DB 적재 1회차  (0) 2023.06.07

    댓글

Designed by Tistory.