CSV 분할 도구

대용량 CSV 파일을 행 수, 파일 수 또는 파일 크기 기준으로 작은 파일로 나눕니다. 각 파일에 헤더가 유지되고, 따옴표 필드는 온전하게 보존되며, 데이터는 브라우저 밖으로 나가지 않습니다.

파일은 브라우저에서 로컬로 처리되며 업로드되지 않습니다.

파일은 브라우저에서 로컬로 처리되며 업로드되지 않습니다.

분할 원리

파일을 바이트 스트림으로 읽고 행 경계에서만 자르기 때문에 모든 출력 파일이 그 자체로 올바른 CSV입니다.

  1. 1

    각 행의 끝 찾기

    바이트를 한 번만 훑습니다. 줄바꿈은 큰따옴표 밖에 있을 때만 행의 끝으로 인식되므로, 여러 줄 주소처럼 따옴표 안에 있는 줄바꿈이 행을 둘로 나누는 일은 없습니다.

  2. 2

    행 경계에서 자르기

    행 수 기준: 데이터 N행마다 새 파일을 시작합니다. 파일 수 기준: 먼저 전체 행 수를 센 뒤 최대한 고르게 나눕니다. 크기 기준: 다음 행을 넣으면 제한을 넘기 직전까지 행을 추가합니다.

  3. 3

    각 파일 조립

    각 출력 파일은 원본 헤더 바이트와 원본 파일의 바이트 범위로 이루어집니다. 디코딩, 재인코딩, 복사가 전혀 없기 때문에 수 GB 파일도 메모리를 소진하지 않고 몇 초 만에 분할됩니다.

보존되는 것과 지원하지 않는 것

  • 행은 절대 중간에서 잘리지 않습니다. 한 행이 크기 제한보다 크면 그 행 하나가 별도 파일이 됩니다.
  • 따옴표 필드는 RFC 4180을 따릅니다. 따옴표 안의 쉼표, 줄바꿈, 이중 따옴표("")는 데이터입니다.
  • 구분자(쉼표, 세미콜론, 탭, 파이프)는 첫 행에서 감지되며 직접 바꿀 수 있습니다. 구분자는 따옴표 해석과 미리보기에 영향을 주지만 행의 끝 위치에는 영향을 주지 않습니다.
  • UTF-8 BOM과 Windows CRLF 줄바꿈은 모든 파일에 유지되어 Excel이 원본과 똑같이 엽니다.
  • UTF-16 파일은 메시지와 함께 거부됩니다. 먼저 UTF-8로 저장하세요. 한 번에 최대 5,000개 파일까지 생성됩니다.
  • ZIP 다운로드는 무압축(store) 방식이며 총 4 GB까지입니다. 그보다 크면 파일별로 다운로드할 수 있습니다.

예제

두 예제 모두 내장 샘플을 사용하므로 직접 불러와 모든 숫자를 확인할 수 있습니다.

주문 12,000행을 5,000행짜리 파일로 분할

"주문 데이터 (12,000행)" 샘플을 불러오고 "파일당 행 수"를 유지한 채 5000을 입력하고 헤더 스위치는 켜 둡니다.

  1. 1첫 줄 "order_id,order_date,…"가 헤더입니다. 나머지 12,000줄이 데이터 행입니다.
  2. 212,000 ÷ 5,000 = 꽉 찬 파일 2개에 2,000행이 남으므로 파일은 3개가 됩니다.
  3. 3파일 1과 2는 1–5,000행과 5,001–10,000행, 파일 3은 10,001–12,000행을 담습니다.
  4. 4각 파일이 같은 헤더 줄로 시작하므로 줄 수는 각각 5,001, 5,001, 2,001줄입니다.

결과: orders-2026_part_01.csv (5,000행), orders-2026_part_02.csv (5,000행), orders-2026_part_03.csv (2,000행). 합치면 원본 12,000행과 정확히 일치합니다.

여러 줄 메모가 있는 티켓 600건을 4개 파일로 분할

"여러 줄 메모가 있는 티켓" 샘플을 불러오고 "파일 수"를 선택한 뒤 4를 입력합니다.

  1. 1notes 열에는 쉼표, 이중 따옴표, 줄바꿈이 들어 있는 따옴표 텍스트가 있습니다. 첫 번째 패스에서 따옴표 안의 줄바꿈을 무시하고 행을 세어 데이터 600행을 찾습니다.
  2. 2파일당 행 수 = ceil(600 ÷ 4) = 150.
  3. 3행은 순서대로 배분됩니다: T-0001–T-0150, T-0151–T-0300, T-0301–T-0450, T-0451–T-0600.
  4. 4메모가 세 줄에 걸친 티켓도 한 파일에 들어갑니다. 자르기는 따옴표 밖의 행 끝에서만 일어나기 때문입니다.

결과: 티켓 150건씩 4개 파일. 어느 파일을 스프레드시트에서 열어도 여러 줄 메모는 여전히 하나의 셀입니다.

자주 묻는 질문

이 CSV 분할 도구가 파일, 헤더, 인코딩을 처리하는 방식에 대한 질문입니다.

CSV가 서버에 업로드되나요?

아니요. 파일은 브라우저의 File API로 읽히고 사용자 기기에서 바이트 범위로 나뉩니다. 업로드는 없으며 탭을 닫으면 모든 것이 사라집니다.

얼마나 큰 CSV 파일을 분할할 수 있나요?

파일이 스트리밍되므로 파일 크기는 메모리에 영향을 주지 않습니다. 1 GB가 넘는 파일도 잘 분할됩니다. 실질적인 한계는 ZIP 다운로드의 4 GB 제한입니다. 더 큰 결과는 파일 하나씩 다운로드하면 됩니다.

출력 파일마다 헤더 행이 유지되나요?

네. "첫 행은 헤더"가 켜져 있으면 헤더가 모든 파일 맨 위에 반복됩니다. 파일에 헤더가 없다면 끄세요. 그러면 첫 줄이 데이터로 처리됩니다.

쉼표나 줄바꿈이 있는 따옴표 필드는 어떻게 되나요?

그대로 보존됩니다. 큰따옴표 안의 줄바꿈은 행의 끝이 아니라 필드의 일부로 처리되고, 이중 따옴표("")는 이스케이프된 따옴표로 인식됩니다.

어떤 구분자를 지원하나요?

쉼표, 세미콜론, 탭, 파이프입니다. 구분자는 첫 행에서 감지되며 감지가 틀리면 직접 바꿀 수 있습니다.

분할된 파일이 Excel에서 제대로 열리나요?

네. 원본 파일에 UTF-8 BOM이나 Windows 줄바꿈이 있으면 모든 파일이 이를 유지하므로 Excel이 원본과 같은 방식으로 읽습니다.

행 수와 파일 크기 중 무엇으로 분할해야 하나요?

대상에 행 제한이 있을 때(예: Excel 시트당 1,048,576행, 한 번에 10,000행만 받는 가져오기 도구) 행 수로 분할하세요. 대상에 MB 단위 업로드 제한이 있으면 크기로 분할하세요. 병렬 처리를 위해 균등한 조각이 필요하면 파일 수로 분할하세요.

조각을 다시 하나의 파일로 합치려면?

이어 붙이고 반복된 헤더 줄을 제거하면 됩니다. macOS나 Linux에서는: head -n 1 part_01.csv > all.csv; tail -n +2 -q part_*.csv >> all.csv. Python에서는 pandas.concat으로 같은 작업을 할 수 있습니다.