CSV 차이 비교

두 개의 CSV 파일을 비교하여 추가된 행, 삭제된 행, 변경된 셀을 한눈에 확인할 수 있습니다. 원하는 열을 행 식별 키로 지정해 행을 매칭하고 변경 전후 값을 나란히 표시하며, 열 구성이 다른 CSV끼리도 비교할 수 있습니다. 모든 처리는 브라우저 내에서 이루어집니다.

  • 행 식별 키 열은 기본적으로 1열이 선택되지만, ID나 기본키에 해당하는 열이 있다면 그 열을 선택하는 것이 좋습니다. 행의 순서나 개수가 바뀌어도 올바르게 대응하는 행을 매칭할 수 있습니다.
  • 두 CSV 모두 헤더 행이 없다면 "첫 줄을 헤더로 처리" 체크를 해제하세요. col1, col2… 와 같은 자동 생성된 열 이름으로 비교됩니다.
  • "변경된 행" 섹션에서는 키가 일치하는 행끼리 열 단위로 값을 비교하여, 값이 다른 열만 "변경 전 → 변경 후" 형태로 나열합니다.
  • TSV(탭 구분) 파일도 구분자를 "탭"으로 전환하기만 하면 그대로 비교할 수 있습니다.
  • 파일을 업로드하는 대신 Excel이나 스프레드시트에서 복사한 범위를 그대로 붙여넣어도 동일하게 비교할 수 있습니다.

자주 묻는 질문

내보낸 마스터 데이터를 업데이트 전후로 비교하거나, 시스템 이관 전후 데이터 정합성을 확인하는 경우에 자주 사용됩니다. 행이 많은 CSV라도 추가·삭제·변경된 행만 바로 추출해 확인할 수 있어, 육안으로 한 줄씩 비교하는 것보다 훨씬 시간을 절약할 수 있습니다.

네. 행 매칭은 선택한 "키 열"의 값을 기준으로 하기 때문에, 두 파일에서 행의 순서가 다르더라도 키 값이 같은 행끼리 정확하게 비교됩니다. 다만 동일한 키 값이 중복될 경우 나중에 나온 행이 우선 적용됩니다.

네. 비교는 양쪽 헤더를 합쳐 만든 열 목록을 기준으로 이루어지므로, 열 순서가 다르더라도 열 이름으로 올바르게 대응됩니다. 한쪽에만 존재하는 열은 다른 쪽에서 값이 빈 문자열인 것으로 간주해 차이를 계산합니다.

아니요. 비교 처리는 모두 브라우저 내 자바스크립트에서 완결되며, 입력하거나 업로드한 CSV 내용이 서버로 전송되는 일은 없습니다. 민감한 정보가 포함된 데이터도 안심하고 사용할 수 있습니다.

네. 셀 값은 문자열로 엄격하게 비교되므로 대소문자 차이나 앞뒤에 붙은 불필요한 공백도 "변경됨"으로 감지됩니다. 이런 표기상의 차이를 무시하고 싶다면 미리 데이터 표기를 통일해 두는 것이 좋습니다.
ツールくん

여담 ― 텍스트 diff만으로는 CSV 비교가 충분하지 않은 이유

두 CSV 파일의 차이를 확인하는 작업은 전통적으로 Excel에서 두 시트를 나란히 놓고 육안으로 비교하거나, Git 같은 도구로 줄 단위 텍스트 diff를 보는 방식이 일반적이었습니다. 하지만 CSV는 한 줄 안에 여러 값이 쉼표로 나열되는 구조이기 때문에, 줄 단위 diff로는 "그 줄이 바뀌었다"는 것만 알 수 있을 뿐 구체적으로 어느 열이 바뀌었는지는 한눈에 알 수 없습니다. 이 도구가 셀 단위로 변경 지점을 특정하는 것은 바로 이 약점을 보완하기 위해서입니다.

업무 시스템 세계에서는 데이터베이스 테이블을 CSV로 내보내 비교하는 "데이터 대사" 작업이 자주 발생합니다. 이관 전후 데이터가 완전히 일치하는지, 월간 배치 처리 결과가 예상대로인지 확인할 때는 대상 행 수가 수천에서 수만 건에 이르는 경우도 드물지 않습니다. 이런 규모에서는 키 열을 지정해 기계적으로 대조하는 방식이 필수가 됩니다.

Git과 같은 버전 관리 시스템의 diff 알고리즘(Myers diff 알고리즘 등)은 줄 단위의 추가·삭제를 감지하는 데는 뛰어나지만, CSV처럼 "같은 줄이라도 일부 열의 값만 바뀌는" 데이터에는 반드시 최적이라고 할 수 없습니다. 키로 행을 먼저 대응시킨 뒤 셀 단위로 비교하는 이 도구의 방식은 표 형식 데이터의 차이 검출에 특화된 접근법이라 할 수 있습니다.