DB

[Python] SQLite3 DB 적재 2회차

렁다이쿤 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
 

 

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