판다스를 이용하여 csv 파일을 sql 로 변환하려던 중
UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 51: illegal multibyte sequence
오류가 생겼다.
import pandas as pd
import sqlite3
# pandas 라이브러리를 사용해 csv -> sqlite 데이터베이스 변형
con = sqlite3.connect('data.db')
# read_csv() 함수를 사용해 csv파일 읽기
df = pd.read_csv('drinks_price.csv', encoding='cp949')
# to_sql() 함수를 사용하여 데이터를 sqlite에 삽입
# to_sql(테이블이름, db, 만약 존재한다면= 교체, index컬럼 생성x)
df.to_sql('drinks_price', con=con, if_exists='replace', index=False)
#데이터베이스 연결 종료
con.close()
사용한 코드는 이러했다.
원래 cp949 방식으로 인코딩하면 되었었는데, 여기서 사용한 dirnks_price.csv 파일은 구글 스프레드 시트에서 csv 파일로 저장한 파일이기 때문에 자동으로utf-8 형식으로 저장되었다.
참고로 window에서는 는 기본적으로 CP-949로 인코딩을 한다.
- Google은 다운로드 시 자동으로 파일을 UTF-8으로 인코딩합니다.
해결방법
해결방법은 간단하다. 인코딩 방식을 UTF-8로 바꿔주면 된다.
df = pd.read_csv('drinks_price.csv', encoding='utf-8')
만약 이렇게 해도 해결되지 않는다면 저장된CSV 파일을 메모장으로 연다.
그리고 다른이름 저장 - 하단의 파일형식을 UTF-8로 바꿔준다.
그리고 실행하면 더이상 오류가 나지 않는다!
cp-949와 UTF-8의 차이
– Windows의 코드 조합으로 EUC-KR의 확장
– 가변 길이 문자 인코딩으로 1~4바이트까지 사용.
'개발공부 > SQL & DB' 카테고리의 다른 글
[postgreSQL] pgAdmin으로 CSV 파일 import 해 오기 (0) | 2023.08.05 |
---|---|
PostgreSQL과 pdAdmin 설치하기 (0) | 2023.07.24 |
[SQL] pandas 모듈을 사용해서 csv 파일을 sql로 변환 (0) | 2023.06.07 |
[SQL] CSV 파일 SQLite 이용해 DB파일로 바꾸기 (0) | 2023.06.03 |
[SQL] 4가지 모드(box, column, table, markdown) (0) | 2023.06.01 |