공학속으로/python

[python] csv 파일 mysql db 넣기

더월드 2022. 4. 25.

○ mysql db 생성 코드

-테스트를 위해 db 생성 코드를 첨부합니다.

CREATE TABLE `vpn` (
	`list_num` INT(10) NOT NULL AUTO_INCREMENT,
	`datetime` DATETIME NULL DEFAULT NULL,
	`srcip` VARCHAR(30) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	`dstip` VARCHAR(30) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	`inbyte` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	PRIMARY KEY (`list_num`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1
;

 

○ csv 파일

-input_filename='D:/work/csvdb1.csv'

-db에 입력하려는 csv파일은 ',' 구분자로 나눠져 있습니다.

 

○ csv 파일 mysql "vpn" db에 넣기 파이썬 코드

-pip install pymsyql를 하시고, 아래 코드를 복사하여 파이썬 파일을 만들어 주시면 됩니다.

-수정할 곳은 우선적으로 db 연결 계정 및 패스워드, 포트, 데이터베이스명(vpn)을 수정하시면 됩니다.

-input_filename도 알맞게 수정하시구요.

-"#테이블 전체 비우기"에서도 "vpn"이란 db명을 다른 db명으로 수정이 필요할 수 있습니다.

  (※ 테이블을 비우지 않을 경우는 삭제)

 

import pymysql
import csv

mydb = pymysql.connect(
    host="localhost",
    user="root",
    password="비밀번호",
    port=3306,
    db="testdb"
)
input_filename='D:/work/csvdb1.csv'

def csv2db(csv_filename):
    # Get Cursor
    dbconn = mydb.cursor()

    #테이블 전체 비우기
    dbconn.execute("TRUNCATE vpn")
    mydb.commit()

    # insert 쿼리문
    sql = "INSERT INTO vpn (datetime,srcip,dstip,inbyte) values(%s,%s,%s,%s)"
    
    # 파일읽기
    f = open(csv_filename, 'r', encoding='euc-kr')
    rd = csv.reader(f)
    # 첫 번째 행 제외
    next(rd, None)    
    
    for row in rd:
        dbconn.execute(sql, (row[1], row[2],row[3],row[4]))
    
    mydb.commit()
    mydb.close()
    f.close()
    print("OK")

#--------------------------
# Main
#--------------------------
if __name__ == "__main__":
    csv2db(input_filename)

 

○ csv3db_.py 파일 실행하기

-cmd 창에서 csv2db_.py 파일 실행시키고, 모든 루틴이 돌고나서 OK가 나오면 정상적으로 프로그램이 돌아간것입니다.

 

○ 실행 결과

- 한 행에 4개(시간, srcip, dstip, inbyte)로 이루어진 데이타가 정상적으로 데이터베이스에 입력된것을 확인할 수 있습니다.

댓글

💲 추천 글