문제 상황
- python pandas를 사용해, csv를 일정 라인씩 분할하는 과정에서 일부 데이터 끝에 .0, .1이 붙음
- python 3.10
- pandas 2.2.2
문제 배경
- oracle DB로 데이터를 이관해야 함
- 보안 정책 문제로 DB dump를 못해 데이터를 csv로 넣어줘야 했음
- 이마저도 큰 csv를 올리면 컴퓨터가 터져서 분할해야 했음
문제의 파이썬 코드
# CSV 파일 읽기
df = pd.read_csv('파일명.csv')
# 전체 row 수
total_rows = len(df)
# 500만 row씩 파일로 저장
chunk_size = 5000000
for i in range(0, total_rows, chunk_size):
chunk_df = df.iloc[i:i + chunk_size]
file_name = f'chunk_{i // chunk_size}.csv'
chunk_df.to_csv(file_name, index=False)
print(f'생성된 파일: {file_name}')
해결 방법
linux의 split 명령어로 해결
만약, a.csv 파일을 1000 라인씩 분할하고 싶다면 다음과 같이 입력
split -l 1000 a.csv
마치면서
csv row split 중심으로 검색했지만, 유료 툴 소개나 파이썬 얘기밖에 없어서 답답했다.
팀장님이 슥 보시고 바로 해결해 주셨지만, 너무 쉽게 해결돼서 그런지 현타가 좀 심하게 왔다.
이관할 DB에서 문자열 범위를 타이트하게 지정해놔서 다행이지, 그게 아니었으면 서비스 시작하고 발견돼 사람 여럿 피곤해질 뻔했다.
계속 파이썬 관련 스택에서 어이없는 상황들을 마주하니, 파이썬으로 문자열 처리할 땐 좀 꼼꼼하게 봐야겠다.
'개발' 카테고리의 다른 글
단위 테스트 적용하기 (0) | 2024.10.26 |
---|---|
[Java] p6spy 긴 바인딩 로그 치환하기 (0) | 2024.09.04 |
proxyBeanMethods=false를 써야 하는지 (0) | 2024.07.21 |
[Java] 토큰 인증 처리에 대한 정리 (0) | 2024.05.18 |
[Python] 키워드 인자에서 **kwargs 주의점 (0) | 2024.05.17 |