sql 대용량 csv 변환하기

이경주 Junior data analyst·2023년 11월 7일
0

Python

목록 보기
2/8

0. 개요

요즘 sql과 python을 둘다 사용하면서 sql 데이터를 어떻게 하면 저장을 빨리 할 수 있을지 고민하다가 찾은 방법이다.

sql 자체 프로그램 csv 변환을 사용하면 컴퓨터의 사양에 따라 속도가 차이나겠지만, 데이터 row의 개수가 30만개가 넘어가는 순간부터 엄청난 발열과 함께 시간이 오래걸린다.

vscode에서 pandas 라이브러리를 사용하여 csv를 변환하면 이 글을 읽는 사람의 생각보다 더 빨리 변환이 될 것이다. 진짜임(대략 40분 걸리던 것이 8~9분 걸렸다)

그리고 중요한게 컴퓨터 렉도 잘 안걸리고 다른 작업도 병행해서 어느 정도 가능하다.

1. 방법

  • 일단 늘 그랬듯 라이브러리를 불러온다. 방법은 할 줄 만 알면 진짜 간단한 방법이다.
#%%
import pandas as pd
import pymysql
from datetime import datetime

Step 1. 경로 저장

conn = pymysql.connect(host='ip address', user='root', 
password='password', charset='utf8',port = 0000)
  1. host : 아이피 주소 12자리 이하
  2. user : 설정 안했다면 대부분 root일 것이다.
  3. password : sql 서버 password
  4. charset : utf8 고정
  5. port : sql들어가면 host 근처에 있는 4자리 숫자이다.

Step 2. 쿼리저장

query = Select * From table ;
  • 혹시 이 글을 보고 있는데 쿼리를 어떻게 짜야할 지 모르겠다면 구글링 해라

Step 3. csv 변환

print('start-time : ', str(datetime.now())[:19] )

# data
df = pd.read_sql_query(query,conn)
df.to_pickle('경로/파일이름.pkl')
# 혹은 to_csv('경로/파일이름.csv', index = False)

print('end-time : ', str(datetime.now())[:19])
  • print start-time, end-time을 이용하면 얼마나 걸리는 지 알 수 있는데 sql로 할 때보다 엄청나게 빨라진 걸 경험해보길
profile
Good afternoon, Good evening and Good night

0개의 댓글