CSV 4

SQLAlchemy를 이용해 csv파일 DB업로드 하는 방법(feat. psql)

CSV 대량의 데이터를 디비에 업로드하기 위해 사용되는 것 중에 하나가 csv파일입니다. csv파일은 데이터들이 콤마로 구분되어진 파일을 뜻하는데 엑셀이나 스프레드 시트 등에서 쉽게 변환시켜 다운로드할 수 있습니다. 오늘은 실습으로 krx 한국거래소에서 제공하는 종목 데이터를 디비에 업로드해보겠습니다. 먼저 krx 한국거래소에서 받은 종목 데이터 파일은 다음과 같습니다. (csv로 다운받을 수 있습니다) # stock.csv 종목코드,종목명,시장구분,소속부,종가,대비,등락률,시가,고가,저가,거래량,거래대금,시가총액,상장주식수 60310,3S,KOSDAQ,중견기업부,3445,15,0.44,3450,3485,3430,61292,211021945,159405362285,46271513 95570,AJ네트웍스,..

메모리에서 파일로 선입선출이 아닌 벌크 이동

목표 메모리에서 파일로 데이터 이동시 선입선출이 아닌 벌크로 이동시키기 문제 메모리에서 파일로 1개씩 선입선출로 이동하는 것은 좋지 않다는 피드백 받음. 생각해보니 메모리와 파일의 데이터를 모두 합쳐 반환하는 로직을 구현하였으므로 굳이 1개씩 보낼 이유가 없었음. 즉, 데이터를 한 번에 옮기는 것이 훨씬 효율적으로 보여 이를 수정하고자 함. 행동 기존에 선입선출을 위해 사용했던 pop() 매서드를 제거하고 대신 데이터 이동 후 clear() 매서드로 데이터를 지워주었다. def memory_data(arg): args.append(arg) if len(args) > 99: insert_file(args) args.clear() # 비워주지 않으면 중복 값이 계속 이동하므로! global memory_ar..

Log/Today 2022.01.19

메모리, csv, DB입력, 그리고 데이터 반환

목표 - 메모리와 파일 시스템(csv)을 활용하여 DB에 데이터 입력 - 데이터 요청 시 벌크가 0이라면 해당 종목의 가장 최근 데이터 1개 반환 - 데이터 요청 시 벌크가 1이라면 해당 종목의 가장 최근 데이터 최대 100개 반환 문제 - 메모리에 데이터가 100개 이상이 되면 csv파일로 선입선출 방식을 통해 이동해야 함 - csv파일의 데이터는 한 번에 DB로 이동해야 함 - 유저가 요청하면 종목 코드에 맞는 데이터를 1개 또는 최대 100개까지 가져와야 함 행동 - 리스트 안에 데이터가 100개가 된다면 pop()을 이용해 선입선출로 csv로 이동하는 로직 구현 # ------------------------ # 메모리를 활용한 데이터 관리 코드 args = [] # 최근 데이터는 100개 까지 ..

Log/Today 2022.01.17

파일 시스템으로 DB 인서트 하는 중

목표 파일 시스템을 활용하여 수신 데이터를 저장해두었다가 벌크로 DB에 저장하는 로직 구현하기 문제 파일 시스템으로 csv파일에 데이터를 입력해야 함 DB에 벌크로 입력하는 코드를 작성해야 함 csv에서 DB로 벌크 입력한 후 해당 파일의 내용은 삭제해야 함 최신 데이터 100개를 가져오는 로직을 구현해야 함 행동 csv파일을 생성하고 데이터를 입력하는 로직 구현함 sql문으로 벌크 저장하는 로직 구현함 csv의 전체 데이터를 읽어 들여 DB에 입력하는 기능 구현함 DB에서 최근 데이터 100개 불러오는 로직 구현함 고민 csv 데이터를 요청 때마다 초기화 해주지 않으면 DB로 중복해서 저장될 우려가 있음 csv 전체 데이터를 한 번에 저장하기 때문에 요청과는 별개로 불필요한 부하가 생길 수 있음 앞으로..

Log/Today 2022.01.14