python3 csv to json
Python/Anything

python3 csv to json

DB를 분석할 일이 생겼습니다. DB 테이블에서 서치를 해야 하는데 SQL 쿼리문으로는 불편한 점이 다수 있어 각 행의 데이터를 텍스트 파일로 출력하고 텍스트 파일들 전체에서 서치를 해야하는 상황입니다.

 

그래서 DB 데이터를 Microsoft SQL Server Management Studio 프로그램을 사용하여 csv 파일로 출력한 뒤, csv 파일을 json 파일 형태로 변환하였습니다.

 

sqlite db 형태로 뽑아낸 뒤 json 파일로 변환하거나, pandas를 사용하여 db 서버에 연결한 뒤 테이블 정보를 읽어와서 파싱하는 방법도 있지만 csv에서 json으로 바로 변환이 가능한 라이브러리가 존재하여 본 방법을 선택하게 되었습니다.

 

SSMS(Microsoft SQL Server Management Studio) 에서 csv로 export 하는 과정은 생략하고 바로 코드로 넘어가겠습니다.

 

import pandas as pd

csv_data = pd.read_csv("C:\\Users\\PLAINBIT\\Desktop\\배운 것들\\present4n6\\present4n6_test.csv",sep =",", engine='python', encoding='utf-8')

for i in range(0,len(csv_data.index)):
    filename=''

    try:
        filename=(str(csv_data.loc[i][0])+'_'+csv_data.loc[i][13].replace(':','-'))
        csv_data.loc[i].to_json("C:\\Users\\PLAINBIT\\Desktop\\배운 것들\\present4n6\\present4n6_test\\" + filename + '.json',
                                orient="columns", force_ascii=False, indent=2)

    except:
        print("error")
        csv_data.loc[i].to_json("C:\\Users\\PLAINBIT\\Desktop\\배운 것들\\present4n6\\present4n6_test\\" + filename + '.json',
                                orient="columns", force_ascii=False, indent=2)

 

제가 코드를 잘 짜지는 못하지만 코드 내용은 쉽게 이해할 수 있으실 것입니다.

pandas 라이브러리를 사용하기 위해 호출했습니다.

pd.read_csv 함수를 사용하여 csv의 데이터를 읽고 dataframe 형태로 csv_data 변수에 저장합니다.

그리고 .loc 함수를 사용하여 행 단위로 읽어온 뒤, to_json 함수를 통해 각 행을 json 포맷으로 저장합니다.

filename의 경우에는 db 필드의 number(PK) 항목과 날짜 필드를 사용하여 고유한 파일명으로 저장할 수 있도록 했습니다.

 

csv는 utf-8 인코딩을 사용하도록 저장을 했고, force_ascii=false 값을 지정해줘야 한글이 깨지지 않았습니다.

indent 값은 json 파일의 들여쓰기 값을 의미합니다. indent 값이 없으면 출력물이 한 줄로 나와 가독성이 좋지 못합니다.

'Python > Anything' 카테고리의 다른 글

bip_utils 설치  (0) 2022.08.23
Python2 cmd encoding error solve  (0) 2022.03.15