본문 바로가기
[스파르타코딩클럽]데이터분석 과정/SQL

[SQL] Python으로 csv를 sql로 바꾸는 법

by doo_ 2023. 12. 29.

Pandas와 sqlite3 라이브러리를 통해 csv를 sql로 변환하는 법

import pandas as pd #판다스 라이브러리 임포트
import sqlite3 

# 1) 데이터베이스 생성
con = sqlite3.connect('MARKET.db')

# 2) read_csv() 함수를 사용해 csv파일 읽기
df1 = pd.read_csv('List of Orders.csv', encoding='cp949')
df2 = pd.read_csv('Order Details.csv', encoding='cp949')
df3 = pd.read_csv('Sales target.csv', encoding='cp949')

# 3) to_sql() 함수를 사용하여 데이터를 sqlite에 삽입
#  > to_sql(테이블이름, db, 만약 존재한다면= 교체, index컬럼 생성x)
df1.to_sql('List_of_Orders', con=con, if_exists='replace', index=False)
df2.to_sql('Order_Details', con=con, if_exists='replace', index=False)
df3.to_sql('Sales_target', con=con, if_exists='replace', index=False)

#데이터베이스 연결 종료
con.close()

 

- df.to_sql() : DataFrame을 sql데이터베이스에 저장하는 함수

DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, 
				 index_label=None, chunksize=None, dtype=None, method=None)
  • name : SQL 데이터베이스에 저장할 테이블 이름
  • con : SQL 데이터베이스 연결 객체
  • schema : 데이터를 저장할 스키마 이름
  • if_exists : 동일한 이름의 테이블이 이미 존재할 경우 어떻게 처리할지를 설정하는 옵션                                                = fail(기본값) : 에러 발생
    = replace : 해당 테이블을 삭제하고 새로운 테이블로 바꾼다.
    = append : 해당 테이블에 데이터를 추가한다.
  • index : 데이터프레임의 인덱스를 데이터베이스에 저장할지 여부를 결정한다. 기본값은 True
  • index_label : 인덱스 컬럼의 이름을 지정
  • chunksize : 한 번에 데이터를 읽어들일 크기를 지정한다. 기본값은 NONE으로 모든 데이터를 한 번에 읽어들인다.
  • dtype : 데이터 타입을 지정한다. 기본값은 NONE으로 데이터 타입을 추론한다.
  • method : 데이터를 저장하는 방식을 지정한다. multi(기본값)는 한 번에 모든 데이터를 삽입하며, single은 한 번에 한 행씩 삽입한다.

> name, con, if_exist, index 정도만 작성해도 된다.