데이터 응급실 안내두 CSV를 비교할 때

CSV 문제 해결 가이드

두 CSV 파일의 추가·삭제·변경 행을 정확히 비교하는 법

이전 CSV와 새 CSV를 비교할 때 기준 열을 고르는 방법, 행 순서와 열 순서의 차이, 중복값과 빈 기준값을 안전하게 처리하는 원칙을 설명합니다.

최초 작성 2026년 8월 30일마지막 검토 2026년 8월 30일원본 보존 우선
CSV파일 비교데이터 검수변경 이력

업무 시스템에서 다시 내려받은 CSV가 이전 파일과 얼마나 달라졌는지 확인할 때 단순히 두 파일의 글자를 처음부터 끝까지 비교하면 결과가 불필요하게 많아질 수 있습니다. 행 순서가 달라지거나 열 순서가 바뀐 것만으로도 파일 전체가 다른 것처럼 보이기 때문입니다.

사람이 궁금한 것은 보통 다음 네 가지입니다.

  • 이전에는 없었지만 새로 추가된 행
  • 이전에는 있었지만 새 파일에서 사라진 행
  • 같은 항목이지만 일부 값이 바뀐 행
  • 양쪽 파일에서 값이 그대로인 행

이 네 가지를 구분하려면 먼저 어떤 열이 한 행을 구별하는 기준인지 정해야 합니다.

파일 위치가 아니라 기준값으로 행을 찾아야 합니다

다음 두 CSV는 행 순서가 다르지만 데이터 내용은 같습니다.

고객번호,이름,상태
001,김하늘,사용중
002,박도구,휴면
고객번호,이름,상태
002,박도구,휴면
001,김하늘,사용중

첫 번째 행끼리, 두 번째 행끼리 비교하면 모든 값이 달라진 것처럼 보입니다. 하지만 고객번호를 기준 열로 고르면 001과 002를 각각 찾아 연결할 수 있으므로 변경된 행은 0개입니다.

이처럼 CSV 비교에서 행 번호는 위치 정보일 뿐, 같은 대상을 뜻한다는 보장이 없습니다. 정렬 방식이 달라질 수 있는 파일이라면 고객번호, 주문번호, 상품 코드처럼 대상마다 고유한 값을 기준으로 사용해야 합니다.

좋은 기준 열은 한 행을 하나로 구분합니다

기준 열은 다음 조건을 만족할수록 좋습니다.

  1. 같은 파일에서 값이 반복되지 않는다.
  2. 비어 있는 값이 없다.
  3. 파일을 다시 내려받아도 같은 대상에는 같은 값이 유지된다.
  4. 표시 이름이나 상태처럼 자주 바뀌는 정보가 아니다.

이름만 기준으로 삼으면 동명이인을 구분할 수 없습니다. 전화번호도 변경되거나 여러 사람이 함께 사용할 수 있습니다. 가능하면 시스템이 부여한 고객번호나 주문번호를 사용하세요.

한 열만으로 구분할 수 없다면 여러 열을 함께 기준으로 사용할 수 있습니다. 예를 들어 지점마다 주문번호가 다시 시작된다면 지점 코드 + 주문번호를 복합 기준으로 선택합니다.

서울 + 001
부산 + 001

두 행은 주문번호가 같지만 지점 코드가 다르므로 서로 다른 행입니다. 복합 기준을 사용할 때는 선택한 열의 순서와 대응 관계도 양쪽 파일에서 같아야 합니다.

앞자리 0과 공백을 임의로 없애면 안 됩니다

CSV 비교 도구가 값을 숫자처럼 바꾸거나 공백을 자동으로 제거하면 실제 차이를 숨길 수 있습니다.

이전 값 새 값 정확 비교 결과
001 1 다름
ABC abc 다름
서울 서울 다름
빈 값 공백 한 칸 다름

001과 1이 같은 고객을 뜻하는지, 뒤쪽 공백이 실수인지 업무상 필요한 문자인지는 파일만 보고 확정할 수 없습니다. 따라서 비교 단계에서는 원문 문자열을 그대로 확인하는 편이 안전합니다.

공백이나 한글 저장 방식을 먼저 같은 기준으로 맞춰야 한다면 원본을 보관한 뒤 CSV 데이터 정리 도구로 변경 전후를 확인하고 새 사본을 만드세요. 그다음 두 정리 결과를 비교하면 ‘무엇을 같은 값으로 볼 것인지’를 사용자가 통제할 수 있습니다.

중복 기준값은 행 순서대로 연결하지 않습니다

다음 파일에서 고객번호만 기준으로 사용하면 001이 두 번 나옵니다.

고객번호,이름,상태
001,김하늘,사용중
001,김하늘,휴면

새 파일에도 001이 여러 번 있다면 어느 행끼리 같은 대상인지 알 수 없습니다. 첫 번째 행끼리 연결하는 방식은 정렬이 바뀌는 순간 다른 결과를 만들 수 있습니다.

안전한 비교 방법은 중복된 기준값을 비교 보류로 분리하고 실제 값과 행 위치를 보여주는 것입니다. 사용자는 다음 중 하나를 선택할 수 있습니다.

  • 더 고유한 다른 기준 열을 사용한다.
  • 지점 코드나 날짜 같은 보조 열을 복합 기준에 추가한다.
  • 원본 시스템에서 고유 식별자를 다시 포함해 내려받는다.
  • 중복이 실제 오류라면 원본을 수정한 새 사본으로 다시 비교한다.

도구가 중복 행을 임의로 짝지어 ‘변경 없음’이나 ‘변경됨’으로 확정해서는 안 됩니다.

빈 기준값도 비교에서 따로 확인해야 합니다

기준 열이 빈 행은 양쪽 파일에 한 번씩만 있더라도 같은 대상을 뜻한다고 확정할 수 없습니다. 빈 값은 대상의 식별자가 아니라 식별 정보가 없다는 뜻일 수 있기 때문입니다.

복합 기준을 사용할 때도 구성 요소 중 하나가 비어 있다면 먼저 확인하는 편이 안전합니다. 예를 들어 지점 코드 + 주문번호를 기준으로 고른 상태에서 주문번호가 비어 있다면 다른 행과 올바르게 연결할 근거가 부족합니다.

비교 보류 행은 삭제하거나 숨길 대상이 아닙니다. 실제 파일의 어느 행에서 기준값이 비었는지 확인하고 원본 시스템이나 담당자에게 식별 정보를 확인해야 합니다.

열 순서와 파일 형식이 달라도 셀 값은 비교할 수 있습니다

다음 변화는 데이터 값의 변화와 구분해야 합니다.

  • 열 순서가 바뀜
  • 행 순서가 바뀜
  • 쉼표 CSV가 탭 TSV로 바뀜
  • UTF-8 파일이 CP949 계열로 저장됨
  • 행 사이 줄바꿈이 CRLF에서 LF로 바뀜

파일을 올바르게 해석한 뒤 열 이름과 기준값으로 연결한다면 이런 저장 형식 차이만으로 모든 행을 변경으로 표시할 필요는 없습니다. 반면 따옴표 안 셀 값에 실제 줄바꿈이 들어 있고 그 줄바꿈 문자가 달라졌다면 셀 내용의 변화이므로 변경으로 볼 수 있습니다.

인코딩이나 구분자를 안전하게 확정할 수 없거나 따옴표 구조가 깨진 파일은 먼저 CSV 파일 진단 도구에서 원인을 확인하세요. 잘못 해석한 셀을 비교하면 결과 전체가 신뢰하기 어려워집니다.

추가된 열과 삭제된 열은 행 변경과 별도로 봅니다

이전 파일에 이름, 전화번호가 있고 새 파일에 이름, 전화번호, 메모가 있다면 메모는 새로 추가된 열입니다. 새 열 때문에 기존의 모든 행을 ‘변경된 행’으로 표시하면 실제로 값이 달라진 행을 찾기 어려워집니다.

따라서 비교 결과는 다음을 나누어 보여주는 편이 좋습니다.

  • 열 구조 변화: 추가된 열과 삭제된 열
  • 행 변화: 추가된 행과 삭제된 행
  • 셀 값 변화: 양쪽에 연결된 행의 공통 열에서 바뀐 값

열 이름이 바뀐 것인지 완전히 다른 열이 추가된 것인지는 이름만 보고 추측하지 않습니다. 비교 기준으로 직접 연결한 두 열은 기준 열의 이름이 달라도 같은 역할로 사용할 수 있지만, 일반 열 이름 변경까지 자동으로 추론하면 잘못된 연결이 생길 수 있습니다.

기준값 자체가 바뀌면 추가와 삭제로 보입니다

기준값은 같은 행을 찾는 주소와 같습니다. 이전 파일의 고객번호가 001이고 새 파일에서는 002라면 도구는 두 값을 같은 행으로 연결할 근거가 없습니다.

이 경우 결과는 다음처럼 나옵니다.

  • 001: 삭제된 행
  • 002: 추가된 행

이름과 전화번호가 같더라도 같은 사람이라고 자동 판정하지 않는 것이 안전합니다. 실제로 식별번호가 변경된 상황이라면 담당자가 원본 시스템의 변경 이력과 대조해야 합니다.

비교 결과에서 먼저 볼 순서

비교가 끝났다면 전체 표를 처음부터 읽기 전에 다음 순서로 확인하세요.

  1. 양쪽 파일의 전체 데이터 행 수가 예상과 맞는지 확인합니다.
  2. 추가·삭제·변경·동일 행 수를 확인합니다.
  3. 추가되거나 삭제된 열이 있는지 확인합니다.
  4. 중복 기준값과 빈 기준값으로 보류된 행이 있는지 확인합니다.
  5. 변경된 행에서 열 이름, 이전 값과 새 값을 함께 봅니다.
  6. 추가·삭제 행의 전체 값을 펼쳐 실제 대상을 확인합니다.
  7. 필요한 경우 전체 차이 CSV나 상세 JSON을 내려받아 담당자와 검토합니다.

‘변경 0건’이라는 숫자만 보는 것도 충분하지 않습니다. 비교 보류 행이 있다면 그 행들은 변경 여부를 확정하지 못한 상태입니다. 동일 행 수와 보류 행 수를 함께 확인해야 합니다.

보고서에는 실제 값이 들어갑니다

변경점을 다시 검토하려면 보고서에 기준값, 이전 값과 새 값이 포함되어야 합니다. 이름·전화번호·메모 같은 열도 사용자가 선택한 파일에 들어 있었다면 비교 결과와 상세 보고서에 나타날 수 있습니다.

비교 보고서는 CSV와 JSON 중에서 선택할 수 있으며 각 파일은 최대 16MiB까지 만듭니다. 이 크기를 넘으면 내용을 임의로 줄인 보고서를 내려받지 않고 화면에서 결과를 확인하도록 안내합니다.

보고서를 다른 사람에게 전달하기 전에는 다음을 확인하세요.

  • 파일명에 고객사나 프로젝트명이 들어 있지 않은가?
  • 기준 열에 고객번호나 다른 식별 정보가 포함되는가?
  • 변경 전후 값에 이름·전화번호·주소·메모가 포함되는가?
  • 전달받는 사람이 전체 실제 값을 볼 필요가 있는가?

CSV 파일 비교 도구는 두 파일과 결과를 현재 브라우저에서 처리하고 서버로 보내지 않습니다. 하지만 내려받은 파일을 이메일이나 메신저로 공유하는 순간에는 해당 서비스에서 데이터가 처리됩니다. 조직의 보안 기준과 개인정보 처리 절차에 맞게 관리하세요.

비교 전 마지막 확인표

  1. 이전 파일과 새 파일의 역할을 올바르게 선택했는가?
  2. 각 파일의 인코딩과 열 구조가 정상적으로 해석됐는가?
  3. 기준 열이 한 행을 고유하게 구분하는가?
  4. 복합 기준의 열 대응 순서가 양쪽 파일에서 맞는가?
  5. 앞자리 0과 공백을 원문 그대로 비교해야 하는가?
  6. 중복 기준값과 빈 기준값이 비교 보류로 분리됐는가?
  7. 추가·삭제된 열을 행의 값 변경과 구분했는가?
  8. 상세 보고서를 공유해도 되는 데이터인가?

CSV 비교에서 가장 중요한 것은 차이의 개수를 많이 찾는 것이 아니라 어떤 근거로 같은 행을 연결했고, 연결하지 못한 행을 숨기지 않았는지입니다. 기준 열을 먼저 검토하면 행 순서가 크게 달라진 파일에서도 실제 추가·삭제·변경 내용을 훨씬 정확하게 확인할 수 있습니다.