ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MAC 터미널로 대용량 csv 파일 분리하기
    오류 해결 2023. 7. 15. 05:21
    당신이 이 글을 통해 얻을 수 있는 정보

    1. 타겟 파일 로컬 절대 주소 찾기
    2. 맥북 터미널 명령어로 폴더 경로 찾아서 들어가기
    3. CSV 파일 데이터의 line(행) 단위로 잘라서 저장

    공모전 참여로 인해 받은 데이터 파일이 1.3기가이다.

    low_memory=False 로 import 옵션을 지정하고 30분을 기다려도 불려지지 않아서 csv 파일을 분리하는 방법을 찾게 되었다.

    window exe 설치 파일로 이런 기능을 지원하는 사설 프로그램이 있었는데 나는 컴퓨터에 새로 설치하는걸 극혐해서.. (계속 메모리 먹으므로) 로컬 컴퓨터에서 다른 프로그램 도움 없이 CSV 파일을 분리하는 방법에 대해 찾아보았다.

    웹기반으로 이렇게 CSV 파일을 분리해주는 사이트에서는 대용량이라 그런지 업로드 실패!

    그런데 찾아보니 맥북 터미널로 이렇게 쉽게 분리할 수 있었다.

     

    일단 윈도우만 평생 쓰다 처음 맥북을 쓰는 사람은 이 맥킨토시의 폐쇄적인 파일 시스템에 적응이 힘들기 때문에, 먼저 조작을 목표로 하는 파일의 절대값 경로 주소를 찾는 방법에 대해 알아보자.

     

    1. 타겟 파일 로컬 절대 주소 찾기

    파일 마우스 올려두고 오른쪽 버튼 클릭 or 트랙패드 두 손가락으로 클릭

    정보 가져오기 클릭

    위치 : 에서 해당 파일 위치 드래그 후 주소를 복사하면 > 아이콘이 /로 변경돼서 해당 파일이 소속된 폴더 경로의 풀 버젼을 얻을 수 있다.

    나는 원드라이브를 쓰고 있어서 onedrive~부터 복사했음에도 불구하고 터미널창에 붙여넣기 해보니 root 주소인 /Users~부터 나오더라.

     

    2. 맥북 터미널 명령어로 폴더 경로 찾아서 들어가기

    앞에 cd 타이핑 후 붙여넣기

    맥북이름@이름ui-MacBookAir ~ % cd /Users/중간주소/OneDrive/중간주소들/cs_mkt_dataset

     

    3. CSV 파일 데이터의 line(행) 단위로 잘라서 저장

    맥북이름@이름ui-MacBookAir cs_mkt_dataset(최종 폴더명) % split -l 100000 data.csv 설정할이름

    split 쪼개기 -l 라인별로 (행별로) 100000 10만 행 단위로 파일명.csv 설정할이름

     

    이렇게 하면 data.csv 오리지널 파일이 설정할이름aa 설정할이름ab 이렇게 쪼개진다.

    아 파일명 지정을.. .csv 로 따로 안해줬는데 for문으로 돌리는 이 명령어 따로 있던데 나중에 필요하면 ㅋㅋㅋ 추가하는걸로

    전적으로 내 기준 돌아가는 블로그...

     

    중요한 점은 csv 파일같이 안에 데이터가 들어있는 경우 임의로 자르게 되면 원 데이터의 모습을 잃어버릴 수 있기 때문에 행 단위로 잘 자르는게 중요하다!

     

     

    4. 확장명 추가

    for i in $(find 설정한파일명_*); do mv $i "$i.csv"; done
    for i in $(find . -type f -name "file_*.csv" -not -name "설정한파일명_aa.csv");
    	do echo -e "$(head -1 file_00.csv)\n$(cat $i)" > $i;
    done

     

     

    생각해보니 교환학생 데이터모델링 수업 들을 때 이런 쉘 명령어 수업 들었는데,, 그 때 중요성도 모르고 노느라 바빠서(철 업슴 ㅠㅠㅠ) 잘 기억이 안난다.

    pdf 찾아서 나중에 다시 정리해봐야겠다.

Designed by Tistory.