CSV 차이 비교

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

CSV 차이 비교란

CSV 차이 비교는 두 개의 CSV(또는 TSV) 데이터를 열 단위·행 단위로 대조하여 "추가된 행", "삭제된 행", "값이 바뀐 셀"을 자동으로 찾아내는 도구입니다. 텍스트 편집기의 줄 비교(Git의 diff 등)는 한 줄 전체의 추가·삭제만 판단할 수 있지만, 이 도구는 행을 식별 키(ID나 기본키에 해당하는 열)로 먼저 대응시킨 뒤 셀 단위까지 비교하기 때문에, 같은 행 안에서 "어느 열의 값만 바뀌었는지"까지 정확히 짚어낼 수 있습니다.

입력한 CSV는 브라우저 내 자바스크립트만으로 처리되며 서버로는 전혀 전송되지 않습니다. 회원 데이터나 매출 데이터처럼 외부에 유출하고 싶지 않은 정보가 포함된 CSV도 안심하고 비교할 수 있습니다. 열의 순서나 개수가 서로 다른 두 CSV라도 헤더 이름을 기준으로 자동으로 대응시켜 비교하는 것도 이 도구의 특징입니다.

CSV 차이 비교 사용법

  1. 비교 원본(A)과 비교 대상(B) CSV를 준비합니다 왼쪽 입력란에 변경 전 CSV, 오른쪽 입력란에 변경 후 CSV를 직접 붙여넣거나, "파일 선택"에서 CSV/TSV 파일을 업로드합니다.
  2. 구분자를 선택합니다 쉼표로 구분된 CSV인지 탭으로 구분된 TSV인지에 따라 "구분자"를 쉼표 또는 탭으로 설정합니다.
  3. 헤더 행 유무를 지정합니다 첫 줄이 열 이름을 나타내는 헤더라면 "첫 줄을 헤더로 처리"에 체크합니다. 헤더가 없는 경우 체크를 해제하면 col1, col2… 형태의 연번 열 이름이 자동으로 부여됩니다.
  4. 키 열을 선택합니다 행을 식별하는 열(ID나 기본키에 해당하는 열)을 드롭다운에서 선택합니다. 이 열의 값을 기준으로 A와 B의 행이 서로 대응됩니다.
  5. 차이 결과를 확인합니다 "삭제된 행", "추가된 행", "변경된 행"이 자동으로 목록에 표시됩니다. 변경된 행은 셀마다 변경 전·변경 후 값이 나란히 나열됩니다.

더 잘 활용하기 위한 팁

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

CSV 차이 비교 활용 사례

마스터 데이터 업데이트 전후 확인

상품 마스터나 고객 마스터를 CSV로 내보낸 뒤 업데이트 작업 전후 내용을 비교하면, 의도하지 않은 변경이 섞여 있지 않은지 확인할 수 있습니다.

시스템 이관 시 데이터 대사

기존 시스템과 신규 시스템에서 각각 출력한 CSV를 비교하여, 이관 과정에서 데이터가 누락되거나 중복되지 않았는지 확인하는 "데이터 대사" 작업에 사용할 수 있습니다.

배치 처리 결과 검증

일별·월별 배치 실행 전후로 테이블을 CSV로 출력해, 의도한 행만 정확히 추가·수정되었는지 검증하는 용도에 적합합니다.

스프레드시트 변경 이력 점검

Excel이나 스프레드시트에서 복사한 표를 붙여넣어 비교하면, 공동 편집 과정에서 누군가 변경한 부분을 빠르게 찾아낼 수 있습니다.

API·스크레이핑 결과의 차이 모니터링

API로 주기적으로 수집한 데이터를 CSV로 변환해 매일 비교하면, 가격이나 재고 수량 같은 특정 값이 언제 바뀌었는지 추적할 수 있습니다.

CSV 차이 비교 용어집

키 열
행을 고유하게 식별하기 위해 사용하는 열을 말합니다. ID나 기본키에 해당하는 열을 지정하면, 행의 순서가 바뀌어도 서로 대응하는 행끼리 정확하게 대조할 수 있습니다.
헤더 행
CSV의 첫 줄에 위치하며 각 열의 이름을 나타내는 행입니다. "첫 줄을 헤더로 처리"를 활성화하면 이 행은 차이 비교 대상에서 제외되고 열 이름으로 취급됩니다.
구분자
CSV에서 각 셀의 값을 구분하기 위해 사용하는 기호입니다. 표준은 쉼표이지만, 탭으로 구분된 TSV도 동일한 방식으로 비교할 수 있습니다.
합성 열 목록
비교 원본(A)과 비교 대상(B)의 헤더를 합쳐 만든 열 이름 목록입니다. A의 열 순서를 기준으로 B에만 있는 열을 뒤에 추가하여 만들어집니다. 한쪽에만 존재하는 열은 다른 쪽 값을 빈 문자열로 간주해 비교합니다.
변경 셀
같은 키를 가진 행끼리 열별로 값을 비교했을 때 값이 서로 달랐던 셀을 말합니다. 변경 전(A)과 변경 후(B)의 값이 나란히 표시됩니다.
변경 없음 행
비교 원본과 비교 대상 양쪽에 모두 존재하고, 모든 열의 값이 완전히 일치하는 행입니다. 차이 목록에는 표시되지 않고 건수만 요약에 나타납니다.

자주 묻는 질문

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

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

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

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

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

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

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

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

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