pandas와 sqlite3를 사용하여 csv파일을 sql 쿼리로 변환하는 코드이다.
전체 코드
import pandas as pd #판다스 라이브러리 임포트
import sqlite3
# pandas 라이브러리를 사용해 csv -> sqlite 데이터베이스 변형
con = sqlite3.connect('data.db')
# read_csv() 함수를 사용해 csv파일 읽기
df = pd.read_csv('data.csv', encoding='cp949')
# to_sql() 함수를 사용하여 데이터를 sqlite에 삽입
# to_sql(테이블이름, db, 만약 존재한다면= 교체, index컬럼 생성x)
df.to_sql('menu', con=con, if_exists='replace', index=False)
#데이터베이스 연결 종료
con.close()
to_sql() 함수
: pandas 데이터프레임을 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_exists, index만 작성해도 상관없다.
con 매개변수
데이터베이스 연결 객체이다. 데이터베이스 연결 객체는 데이터베이스 서버에 연결하고 데이터베이스와의 통신을 가능하게 해주는 객체이다. sqlite3 모듈을 사용하여 데이터베이스 연결 객체를 생성할 수 있다. sqlite3.connect() 함수를 사용하여 데이터베이스에 연결하고, 반환된 연결 객체를 to_sql() 함수의 con 매개변수로 전달한다.
if_exists 매개변수
- fail: 데이터베이스에 이미 같은 이름의 테이블이 있을 경우 에러를 발생시킨다.
- replace: 데이터베이스에 이미 같은 이름의 테이블이 있을 경우 해당 테이블을 삭제하고 새로운 테이블을 생성한다.
- append: 데이터베이스에 이미 같은 이름의 테이블이 있을 경우 해당 테이블에 데이터를 추가한다.
'개발공부 > SQL & DB' 카테고리의 다른 글
PostgreSQL과 pdAdmin 설치하기 (0) | 2023.07.24 |
---|---|
UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 51: illegal multibyte sequence 오류 해결 (0) | 2023.06.14 |
[SQL] CSV 파일 SQLite 이용해 DB파일로 바꾸기 (0) | 2023.06.03 |
[SQL] 4가지 모드(box, column, table, markdown) (0) | 2023.06.01 |
[SQL] SQL 기초지식 공부(식별자, 주석, DB백업, 데이터타입, 이스케이프, 테이블 스키마 확인, DEFAULT, 인덱스) (0) | 2023.05.31 |