CSV 병합

여러 CSV 파일을 하나로 합칩니다. 헤더가 같으면 그대로 이어 붙이고, 다르면 열을 맞춰 씁니다. 따옴표 필드는 깨지지 않으며 데이터는 브라우저 밖으로 나가지 않습니다.

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

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

병합 방식

헤더가 같은 파일은 행 경계에서 이어 붙입니다. 헤더가 다른 파일은 행 단위로 읽어 하나의 표로 맞춥니다.

  1. 1

    각 헤더 읽기

    각 파일의 첫 행에서 BOM, 구분 기호, 열 이름을 확인합니다. 감지가 틀리면 구분 기호를 바꿀 수 있습니다.

  2. 2

    출력 열 정하기

    모든 열은 처음 나타난 순서대로 헤더를 남깁니다. 첫 파일의 열은 첫 헤더만 남기고 이후 파일의 추가 열은 버립니다. 원본 파일명 열을 앞에 붙일 수 있습니다.

  3. 3

    CSV 하나 쓰기

    헤더가 같으면 이후 파일은 원본의 바이트 범위로 붙이므로 큰 병합도 행을 디코드하지 않습니다. 열이 다르면 각 데이터 행을 출력 열에 맞춰 다시 인코딩합니다.

유지하는 것과 지원하지 않는 것

  • 따옴표 필드는 RFC 4180을 따릅니다. 따옴표 안의 쉼표, 줄바꿈, 겹따옴표("")는 데이터입니다.
  • 출력 구분 기호와 줄바꿈은 첫 파일을 따릅니다. 입력 중 하나라도 UTF-8 BOM이 있으면 출력에도 넣습니다.
  • 파일이 줄바꿈으로 끝나지 않으면 다음 파일 앞에 줄바꿈을 넣어 행이 붙지 않게 합니다.
  • UTF-16은 안내 메시지와 함께 거절합니다. 먼저 UTF-8로 저장하세요. 한 번에 최대 50개 파일을 병합합니다.
  • 한 파일 안의 중복 헤더는 name, name_2처럼 고유하게 만듭니다. 빈 헤더는 column_N이 됩니다.

계산 예

내장 샘플을 쓰므로 불러와서 숫자를 대조할 수 있습니다.

같은 헤더의 주문 파일 두 개를 병합

“주문 파일 2개 (120 + 80행)”을 불러오고 열은 “모든 열”, 헤더는 켠 채로 둡니다.

  1. 1q1-orders.csv 헤더는 order_id,order_date,region,amount이고 데이터는 120행입니다.
  2. 2q2-orders.csv도 같은 헤더에 데이터 80행이며 order_id는 2001부터입니다.
  3. 3헤더가 같으므로 이어 붙입니다. 헤더는 한 번만 쓰고 Q1의 모든 행 다음에 Q2의 모든 행이 옵니다.
  4. 4120 + 80 = 200 데이터 행. 병합 파일은 같은 헤더 줄로 시작합니다.

결과: q1-orders_merged.csv, 데이터 200행(Q1 120, Q2 80), 열 4개.

열이 다른 직원과 계약직을 병합

“직원 + 계약직 (열이 다름)”을 불러오고 “모든 열”을 유지합니다.

  1. 1staff.csv 열: id, name, team (4명). contractors.csv 열: id, name, email, day_rate (3명).
  2. 2헤더 합집합은 id, name, team, email, day_rate 다섯 열이며 처음 나온 순서입니다.
  3. 3직원 행은 email과 day_rate가 빈칸, 계약직 행은 team이 빈칸입니다. Li, Wei 같은 따옴표 이름은 한 칸입니다.
  4. 4“첫 파일의 열”로 바꾸면 id, name, team만 남고 email과 day_rate는 빠집니다.

결과: 데이터 7행, 5열. 파일을 열면 계약직 세 명의 이메일이 email 열에 있고 team은 빈칸입니다.

FAQ

CSV 병합, 헤더, 인코딩에 대한 질문입니다.

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

아니요. 브라우저 File API로 기기에서만 읽습니다. 업로드는 없고 탭을 닫으면 버려집니다.

열이 다른 CSV는 어떻게 합치나요?

“모든 열”을 고르세요. 모든 헤더를 남기고 해당 파일에 없는 칸은 비웁니다. 이후 파일을 첫 헤더에 맞추려면 “첫 파일의 열”입니다.

헤더 행이 반복되나요?

아니요. “첫 행이 헤더”가 켜져 있으면 맨 위에 한 번만 씁니다. 이후 파일은 데이터 행만 씁니다.

쉼표나 줄바꿈이 있는 따옴표 필드는요?

그대로 유지됩니다. 큰따옴표 안의 줄바꿈은 행 끝이 아니라 필드이고, ""는 이스케이프된 따옴표입니다.

어떤 구분 기호를 지원하나요?

쉼표, 세미콜론, 탭, 파이프입니다. 각 파일의 첫 행에서 감지하며 덮어쓸 수 있습니다. 병합 결과는 첫 파일의 구분 기호를 씁니다.

엑셀에서 잘 열리나요?

네. 입력 중 UTF-8 BOM이 있으면 출력에도 남깁니다. 첫 파일이 Windows CRLF이면 그것도 남깁니다.

각 행이 어느 파일에서 왔는지 알 수 있나요?

“원본 파일명 열 추가”를 켜면 각 데이터 행 앞에 원래 파일 이름이 붙습니다.

CSV 분할 도구와 무엇이 다른가요?

분할 도구는 한 파일을 여러 개로 자르고, 이 페이지는 그 반대입니다. 나눈 조각을 여기서 다시 합칠 수 있습니다. 헤더를 켜 두면 반복 헤더가 쌓이지 않습니다.