본문 바로가기
개발일지/SQL

SQL 루틴 저장해 놓았던 csv 파일을 SQL에 테이블 생성해서 값 넣어주기

by 다니엘의 개발 이야기 2022. 7. 6.
320x100

간단할 줄 알았는데, 생각외로 약간 헤멨다.

 

타이핑해서 데이터 깔짝 넣는건 괜찮은데, 뭐 중요한건 파일화 되어있는 대용량의 파일을 핸들링하는거니깐.

 

import pandas as pd

df = pd.read_csv('oil_mine.csv', encoding='utf-8', index_col=0)
df.tail(2)

 

 

df.info()

 

# csv 데이터를 데이터베이스에 넣기 전에 테이블 스키마 만들어 주기
import mysql.connector
conn = mysql.connector.connect(

    host = '엔드포인트',
    port = 3306,
    user = '계정명',
    password = '비밀번호',
    database = '접근원하는 데이터베이스명'

)

# 테이블 생성
sql = 'create table oil_datas(\
        name varchar(64), address varchar(128),\
        brand varchar(32), is_self char(2),\
        gasoline int, diesel int, car_wash char(2),\
        charging_station char(2), car_maintenance char(2),\
        convinience_store char(2),  24_hour char(2),\
        gu varchar(8), lat float, lng float)'

cursor = conn.cursor(buffered=True)
cursor.execute(sql)

 

# 생성된 테이블에 값 넣어주기

# 미리 df.info()로 확인했다. 컬럼값이 14개다.

sql = 'insert into oil_datas values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'
cursor = conn.cursor(buffered=True)

for i, row in df.iterrows():
    cursor.execute(sql, tuple(row))
    print(tuple(row))
    conn.commit()

 

결과적으로는 터미널 통해서 해당 내용 확인했을때 정상적으로 들어왔다.

 

다만, 컬럼값이 14개다보니 이게 깨지듯이 보이는 한계를 극복하고 싶다.

글자를 작게하자니, 그러면 내가 못보겠다;

300x250

'개발일지 > SQL' 카테고리의 다른 글

SQL 데이터베이스 데이터 가져오기  (0) 2022.07.08
SQL 테스트 복기  (0) 2022.07.06
SQL Subquery 종류  (0) 2022.07.02
SQL Scalar Functions  (0) 2022.07.02
SQL group by 결과값 이상하다... 이건 아닌데  (0) 2022.07.02