수천 행짜리 CSV에서 도시별 매출 합계나 특정 조건의 주문만 뽑아내려면, 엑셀에서는 피벗 테이블과 필터를 여러 번 거쳐야 합니다. 이럴 때 CSV를 SQLite라는 가벼운 데이터베이스에 한 번 넣어 두면, SQL 한 줄로 원하는 집계를 바로 꺼낼 수 있습니다.
SQLite는 서버를 따로 설치할 필요 없이 파일 하나로 동작하는 데이터베이스입니다. 파이썬에는 기본으로 들어 있어 별도 설치도 필요 없습니다. CSV를 넣고 조회하는 과정을 실제 데이터로 해 보겠습니다.

다룰 CSV
주문 내역을 담은 간단한 CSV를 예로 씁니다.
실제로는 수천, 수만 행이어도 방법은 같습니다.
order_id,city,product,amount
1,서울,키보드,32000
2,부산,마우스,18000
3,서울,모니터,210000
... (모두 8행)
1단계: CSV를 SQLite 테이블로 넣기
pandas로 CSV를 읽어 to_sql로 넘기면, 테이블이 자동으로 만들어지며 데이터가 채워집니다.
컬럼 이름과 자료형도 알아서 잡힙니다.
import sqlite3, pandas as pd
df = pd.read_csv("sales.csv")
conn = sqlite3.connect("sales.db") # 없으면 새로 만들어짐
df.to_sql("sales", conn, if_exists="replace", index=False)
이제 sales.db라는 파일 안에 sales라는 테이블이 생겼습니다.
여기까지가 준비의 전부입니다.
2단계: SQL로 조회하기
도시별로 묶어 매출 합계를 구하고 큰 순서로 정렬해 보겠습니다.
엑셀의 피벗에 해당하는 작업이 SQL로는 몇 줄입니다.
SELECT city, COUNT(*) AS 건수, SUM(amount) AS 매출합
FROM sales
GROUP BY city
ORDER BY 매출합 DESC
실제로 실행하면 이런 결과가 나옵니다.
서울 건수 4 매출합 292,000
대구 건수 2 매출합 242,000
부산 건수 2 매출합 228,000
도시마다 몇 건이 있고 매출이 얼마인지 한 번의 질의로 정리됐습니다.
조건을 바꾸고 싶으면 SQL만 고치면 됩니다. 예를 들어 10만 원 이상 주문만 보려면 이렇게 씁니다.
SELECT order_id, city, product, amount
FROM sales
WHERE amount >= 100000
ORDER BY amount DESC
주문 3 서울 모니터 210,000원
주문 5 부산 모니터 210,000원
주문 7 대구 모니터 210,000원
3단계: 결과를 다시 표로 받기
조회 결과를 파이썬에서 이어서 다루고 싶다면 read_sql로 받으면 곧바로 표(DataFrame)가 됩니다.
df2 = pd.read_sql(
"SELECT product, COUNT(*) AS cnt, SUM(amount) AS total "
"FROM sales GROUP BY product ORDER BY total DESC",
conn,
)
print(df2)
product cnt total
모니터 3 630000
키보드 3 96000
마우스 2 36000
이렇게 하면 CSV로 시작해 SQL로 집계하고 다시 표로 받는 흐름이 하나로 이어집니다.
코드 없이 열어 보고 싶다면
만들어진 sales.db 파일은 DB Browser for SQLite 같은 무료 프로그램으로 열면
표 형태로 보면서 SQL을 입력할 수 있습니다.
코드가 부담스러우면 이 도구로 같은 조회를 마우스와 SQL 입력창만으로 할 수 있습니다.
자주 묻는 질문
Q. 굳이 SQLite에 넣는 이유가 있나요? 그냥 pandas로 하면 안 되나요?
데이터가 아주 크거나, 같은 데이터를 여러 번 조건 바꿔 조회할 때 SQL이 편합니다.
한 번 넣어 두면 파일로 남아 다음에 다시 읽어 바로 질의할 수 있습니다.
Q. 한글이 깨지지 않나요?
SQLite는 내부적으로 UTF-8을 쓰기 때문에 한글이 그대로 저장됩니다.
CSV를 읽을 때 인코딩만 맞으면 조회 결과에도 한글이 정상으로 나옵니다.
Q. 테이블을 다시 만들면 기존 데이터는요?
위 코드의 if_exists="replace"는 같은 이름 테이블을 지우고 새로 만듭니다.
기존 데이터에 이어 붙이려면 "append"로 바꾸면 됩니다.
CSV를 SQLite에 한 번 올려 두면, 복잡한 집계도 질문을 SQL로 바꿔 던지기만 하면 됩니다.
반복해서 뒤져 봐야 할 데이터가 있다면 이 방법이 시간을 크게 줄여 줍니다.
우선 지금 가진 CSV 하나를 to_sql로 넣어 보는 것부터 시작해 보세요.
'파일 형식 백과사전' 카테고리의 다른 글
| JPG 저장할 때 화질(quality)을 몇으로 두면 좋을까, 옵션별 용량 실측 방법 (0) | 2026.07.26 |
|---|---|
| 커진 CSV를 gzip으로 압축하기, 얼마나 줄고 압축한 채로 바로 읽을 수 있을까? (0) | 2026.07.24 |
| 투명 배경 PNG를 JPG로 저장했더니 배경이 새까맣게, 원인과 깔끔한 해결법 (0) | 2026.07.23 |
| 중첩된 JSON을 엑셀에서 열리는 CSV로, 배열까지 한 줄씩 펼쳐 변환하기 (0) | 2026.07.22 |
| Parquet 저장할 때 compression만 바꿨을 뿐인데 용량이 갈립니다, 코덱 3종 실측 비교 (1) | 2026.07.21 |