Command Palette

Search for a command to run...

CSV 차이점: 선 차이점이 없는 두 개의 CSV 파일을 비교합니다

CSV 차이점: 선 차이점이 없는 두 개의 CSV 파일을 비교합니다

T
Toolz Team
|Aug 23, 2026|17 최소 읽기

차이 및 비교 모음의 일부

나를 만들게 한 버그 보고서는 세 단어 길이였습니다: "the sync is droping rows." A client's product feed came in as a nightly CSV,my Laravel importer rewrote it,and somewhere between the two files a handful of SKUs was vanishing. 나의 첫 번째 본능은 명백한 것이었다: 두 파일을 모두 줄 diff 로 던지라. diff 는 단색으로 돌아왔다. 모든 단일 줄은 "changed, " 왜냐하면 수출이 그날 밤 다른 열에 의해 다시 정렬되었기 때문에 이전 파일의 4 번째 줄은 새로운 파일의 900 번째 줄이었다. diff 줄은 기술적으로 정확하고 전혀 쓸모가 없었다. 실제로 필요한 것은 파일을 이해하는 도구였고,각 행을 SKU 의 대응과 일치시켰으며,어떤 레코드가 진정으로 추가,제거, 편집되었는지 말해 주었다. 그 도구는 Toolz 이다 CSV 차이점 검사기그리고 이 가이드가 그 뒤에 있는 추론입니다.

TL;DR: CSV diff 는 두 개의 CSV 파일을 텍스트 줄이 아닌 구조화된 데이터로 비교합니다. 와 같은 키 열로 행 일치 id 또는 email 그리고 각 레코드는 파일에서 이동한 곳마다 상대 레코드와 비교되므로 다시 정렬된 내보내기는 수천 개의 잘못된 변경 사항을 보고하지 않습니다. Toolz 도구는 RFC 4180 상태 머신으로 두 파일을 구문 분석하고 결과를 추가,제거 및 변경된 행으로 분할하고 변경된 모든 행에 대해 다른 정확한 셀을 보여줍니다. 그것은 전적으로 클라이언트 측에서 실행됩니다: 업로드 없음,가입 없음,오프라인에서 작동합니다.

나는 Laravel 및 React 에 SaaS 제품을 구축하고 나는 수출을 조정하는 데 많은 시간을 소비 의미 워드 프레스 플러그인을 배송: 하나의 system's 에 대한 데이터의보기 another's,어젯밤's 스냅 샷에 대한 tonight's,클라이언트가 실제로 도착 파일에 대해 보낸 맹세 파일. CSV 는 그것의 모든에 대한 링구아 프랑카이며,두 CSV 를 올바르게 비교하는 것은 당신이 잘못된 도구로 그것을하려고 할 때까지 사소한 보이는 작업 중 하나입니다. 이것은 내가 나의 좌절 버전을 읽었 으면 좋겠다 가이드입니다.

CSV diff 검사기란 무엇입니까?

CSV diff 검사기는 원본과 변경된 버전인 두 개의 CSV 파일을 가져와 행과 셀 수준에서 두 번째가 첫 번째와 어떻게 다른지 보고합니다. 텍스트 diff 의 추가 및 삭제된 줄 출력 대신 4 개의 버킷을 얻습니다: 새 파일에만 존재하는 행 (추가됨), 이전 파일에만 존재하는 행 (제거됨), 둘 다에 존재하지만 값이 다른 행 (변경됨), 동일한 행 (변경되지 않음). 변경된 모든 행에 대해 좋은 도구는 한 단계 더 깊이 들어가 이동한 특정 열의 이름을 지정하여 새 행 옆에 이전 값을 표시합니다.

전체를 작동하게 하는 구별은 행이 두 파일에서 어떻게 쌍을 이루는가입니다. CSV diff는 키 열과 일치하여 값을 다음과 같이 처리할 수 있습니다 id 또는 an email 기록의 정체성으로,또는 그것은 행 하나와 행 하나를 비교 위치별로 일치 할 수 있습니다. 키 매칭은 데이터를 당길 때마다 동일한 레코드가 다른 라인에 착륙 할 수 있기 때문에 내보내기를 비교할 때마다 거의 원하는 것입니다. 위치 매칭은 라인 번호 자체가 의미 있고 안정적인 파일에 대한 것입니다. 이제까지에만 첨부되는 번호가 매겨진 원장처럼. 올바른 모드를 선택하는 것이 가장 중요한 결정이며,Toolz 도구가 추측보다는 전면 및 중앙에 두는 이유입니다.

다시 정렬된 내보내기에서 선 차이가 완전히 빨간색으로 변하는 이유는 무엇입니까?

이것은 CSV 전용 도구를 찾는 사람들을 보내는 실패이므로 정확하게 이해할 가치가 있습니다. Git 과 모든 코드 편집기에 내장 된 종류 인 텍스트 diff 는 파일을 한 줄씩 순서대로 비교합니다. 가장 긴 공통 하위 줄을 찾아 내고 다른 모든 것을 삽입하거나 삭제 한 것으로 표시하는 알고리즘을 실행합니다. 이는 줄 순서가 파일의 의미 인 소스 코드에 정확히 적합합니다. 함수를 이동하면 진정으로 파일을 변경했습니다.

CSV 내보내기는 반대입니다. 행의 순서는 일반적으로 무엇이든 사고입니다 ORDER BY 쿼리는 우연히 사용되었고,동일한 데이터를 포함하는 두 개의 실행 사이에서 변경될 수 있습니다. 정렬 순서가 이동하는 순간,라인 diff 는 거의 모든 라인을 새로운 위치에서 보고하고,라인업에 실패하며,전체 파일을 변경된 것으로 보고합니다. 세 개의 레코드가 실제로 변경된 원하는 정보는 수천 개의 오탐지 아래에 묻혀 있습니다. diff 는 충실하게 그 일을 했습니다; 레코드에 대한 질문이 있을 때 라인에 대한 질문에 대답했을 뿐입니다.

CSV diff 는 파일을 행과 열로 먼저 구문 분석한 다음,줄 번호가 아닌 키를 기준으로 레코드를 비교하여 이 문제를 해결합니다. 파일을 다시 정렬해도 아무런 효과가 없습니다. SKU 가 있기 때문입니다 A-1007 SKU가 있는 행과 비교됩니다 A-1007 어느 쪽이 앉든 다른 파일에서. 그것이 범주가 존재하는 전체 이유이며,내가 the 에 도달하는 이유입니다 CSV 차이 도구 대신 git diff 파일이 코드가 아닌 데이터일 때마다.

RFC 4180 은 파일 비교와 어떤 관련이 있습니까?

모든 것은,두 개의 CSV 를 먼저 올바르게 구문 분석할 수 없다면 올바르게 비교할 수 없기 때문입니다. CSV 는 누군가가 표준화하기 전에 수십 년 동안 사용되었습니다. 2005 년 IETF 는 출판 RFC 4180는 공통 형식을 설명합니다 text/csv MIME 유형. 모든 도구가 따르는 법칙은 아니지만 공유 계약에 가장 가까운 것이며 순진한 비교가 잘못되는 규칙을 정의합니다.

가장 중요한 규칙은 인용입니다. 필드는 큰따옴표로 감싸질 수 있으며,쉼표, 큰따옴표 또는 줄 바꿈이 포함되어 있는 경우여야 합니다. 인용된 필드 안의 큰따옴표는 두 배로 늘려서 이스케이프됩니다. 따라서 값 "Doe, John" 는 단일 필드이며, "She said ""hi""" 는 값이다 She said "hi"쉼표로 각 줄을 나누는 비교가 잘립니다 "Doe, John" 두 개의 필드로,그 이후의 모든 열을 이동한 다음,행이 변경되지 않았을 때 변경되었음을 자신 있게 보고합니다. Toolz diff 는 동력을 공급하는 동일한 RFC 4180 상태 머신을 실행합니다 CSV 뷰어: 문자별로 텍스트 문자를 걷고,인용된 필드 안에 있는지 추적하며,따옴표 밖에 있을 때만 쉼표나 개행 문자를 구분 문자로 처리합니다. 구문 분석을 올바르게 하는 것은 diff 를 올바르게 하기 위한 전제 조건이며,손으로 굴린 스크립트가 거의 항상 건너뛰는 부분입니다.

두 개의 CSV 파일을 도구와 비교하려면 어떻게해야합니까?

흐름은 일부러 짧습니다. 원본 파일을 첫 번째 상자에 붙여넣고 변경된 파일을 두 번째 상자에 붙여넣거나 샘플 로드를 클릭하여 한 행이 편집되고 하나가 추가되고 하나가 제거되는 작업 예제를 확인합니다.

구분 기호를 확인합니다. 자동 감지 점수는 처음 여러 줄을 동일한 열 수로 각각 얼마나 일관되게 분할하는지에 따라 쉼표,세미콜론, 탭 및 파이프를 지정합니다. 이는 유럽 세미콜론 파일과 탭으로 구분된 내보내기를 올바르게 처리합니다. 데이터에 대한 감지가 잘못된 경우 직접 설정하십시오. 각 파일의 첫 번째 행에 키 열 선택기를 공급하는 열 이름이 있는 경우 헤더 스위치를 켜 두십시오.

이제 행이 일치하는 방법을 선택합니다. 드롭다운에서 키 열을 선택합니다. 일반적으로 an id, email또는 SKU 를 사용하며 도구는 레코드를 해당 값으로 비교합니다. 대신 위치를 선택하여 행별로 비교합니다. 두 개의 토글이 비교를 구체화합니다: 대소문자를 구분하지 않는 일치를 if 켭니다 Active 그리고 active 동일한 값으로 계산해야 하며,트림-공백을 그대로 두어 길 잃은 선행 공간이 변경으로 등록되지 않도록 합니다. 비교를 클릭하면 요약에 네 개의 카운트가 한 눈에 표시됩니다. 변경된 탭을 열어 편집된 각 행을 확장하고 이동한 셀을 정확히 확인하거나 추가 및 제거 탭을 사용하여 전체 행을 테이블로 볼 수 있습니다. 완료되면 보고서 복사 또는 다운로드는 변경된 각 셀의 전후 값을 포함하여 모든 차이점에 대한 일반 텍스트 요약을 내보내며,풀 요청,티켓 또는 클라이언트에 대한 이메일에 붙여넣을 준비가 됩니다.

키 대 위치별로 언제 일치해야 합니까?

이것이 diff가 유용한지 노이즈인지를 결정하는 선택이므로 여기에 내가 사용하는 규칙이 테이블로 배치되어 있습니다.

상황 일치 기준
다시 정렬할 수 있는 데이터베이스 또는 API 내보내기 키 열 동일한 레코드가 각각 다른 선에 도달합니다; 핵심은 안정적인 정체성입니다
두 시스템을 조정' 동일한 레코드를 봅니다 키 열 기록이 어디에 위치하는지가 아니라 양쪽에 기록이 존재하고 일치하는지 여부에 관심이 있습니다
어젯밤's 스냅샷을 오늘 밤's와 비교합니다 키 열 시간이 지남에 따라 행이 추가되고 제거되므로 줄 번호가 표류합니다
고정된 순서로 로그 또는 원장만 추가합니다 위치 줄 번호는 안정적이고 의미 있습니다; 행 N은 진정으로 "the Nth event"
당신이 알고있는 두 파일은 정확히 같은 행 순서를 공유합니다 위치 키는 존재하지 않지만 순서는 동일하게 보장됩니다
고유 열이 전혀 없는 파일 위치 키할 것이 없으니 순서대로 비교하고 제한을 받아들이세요

짧은 버전: 대부분의 CSV 가 식별자를 전달하는 레코드의 내보내기이기 때문에 기본적으로 키 매칭에 도달합니다. 사용 가능한 키가 없거나 행 순서가 진정으로 데이터의 일부인 경우에만 위치 매칭으로 되돌아갑니다. 키를 선택하고 도구가 열에 중복 값이 포함되어 있다고 경고하는 경우,즉 열이 실제로 고유하지 않다는 신호이며 더 나은 키를 선택하거나 소스를 정리해야 합니다. "unique" ID 열이 아닌 것으로 판명되었기 때문에 두 개 이상의 깨진 내보내기를 정확하게 포착했습니다.

실제로 연속적으로 변경된 것을 어떻게 표시합니까?

"5 행의 개수 changed" 시작이지만 실제로 가지고 있는 질문은 "changed how?" Toolz diff는 행당 답변합니다. 일치하는 레코드가 다를 때 두 버전의 열을 열별로 비교하고 이동한 셀만 나열합니다. 각각은 새 값 옆에 이전 값이 표시되었습니다. 고객 행만 있는 경우 plan 칼럼이 나왔습니다 freepro 전체 기록이 아닌 단일 셀을 보고하므로 변경된 하나의 필드를 찾으려고 두 개의 긴 줄을 계속 쳐다보고 있지 않습니다.

이 셀 수준 보기는 CSV diff 가 스프레드 시트 & # 39;s 자체 비교 기능을 통해 보관을 얻는 곳으로,색상으로 셀을 강조 표시하지만 복사를하거나 리뷰에 붙여 넣을 것을 제공하지 않는 경향이 있습니다. 내보낸 보고서는 텍스트로 각 변경 사항을 철자합니다: 행의 키,열 이름 및 이전 값과 새 값. 실제로 나는 풀 요청의 설명에 바로 붙여 넣기하여 검토자가 파일 자체를 열지 않고도 마이그레이션의 데이터 영향을 볼 수 있도록합니다. 구조 뒤에있는 동일한 본능입니다 JSON 차이시끄러운 줄 변경이 아닌 경로로 변경된 키를 보고하는 경우; 두 도구 모두 "what changed"가 "which lines different."보다 더 나은 질문이기 때문에 존재합니다

민감한 CSV 파일을 온라인으로 비교하는 것이 안전합니까?

이 도구의 경우,예, 그리고 그 이유는 핑키 약속보다는 아키텍처입니다. 모든 단계,두 파일을 구문 분석하고 행을 일치시키고 셀당 차이를 계산하고 보고서를 작성하는 것은 자체 브라우저 탭 내에서 JavaScript 로 실행됩니다. 업로드가없고 서버 왕복이 없으며 아무것도 기록되거나 저장되지 않습니다. browser's 네트워크 탭을 열고 비교: 요청을 클릭하면 페이지를 떠날 수 없습니다. 페이지가로드되면 인터넷과의 연결을 완전히 끊을 수 있으며 계속 작동합니다.

CSVs 사람들 diff 가 기업이 소유하는 가장 민감한 파일 중 하나이기 때문에 중요합니다. 고객 목록,거래 내보내기,급여 행,재고 테이블 및 액세스 로그 모두 CSV 로 여행합니다. 서버에 파일을 업로드하는 비교 도구는 아무리 좋은 의도라도 두 개의 개인 스프레드 시트를 다른 사람으로 바꿉니다's 로그 항목. 클라이언트 측 처리는 질문을 제거합니다: 데이터는 시작한 머신을 떠나지 않습니다. 그 기본값은 Toolz.dev 의 모든 도구에서 고의적이며 긴 인수를 작성했습니다 온라인 도구에 대한 데이터 개인 정보 보호 가이드 완전한 추론을 원하는 사람을 위해.

CSV diff는 실제 워크플로에 어떻게 적합합니까?

diff 는 거의 전체 작업; 파이프 라인에서 하나의 스테이션입니다. 내가 가장 자주 치는 패턴은 검증입니다: 나는 가져 오기 또는 마이그레이션을 실행 한 다음 스크립트가 내가 기대했던 것을 정확히 수행했는지 확인하기 위해 내보내기 전후에 diff 를 실행하고 더 이상 아무것도 실행 한 스크립트의 녹색 체크 표시보다 마이그레이션이 작동 한 훨씬 더 나은 신호입니다. diff 가 의도하지 않은 제거를 표시하면 이후에가 아닌 생산에 도달하기 전에 버그를 잡았습니다.

그 주위의 도구는 파일이 무엇을 위한 것인지에 따라 달라집니다. 만약 내가 비교하기 전에 정렬 가능한 격자로 파일을 eyeball 해야 한다면,the CSV 뷰어 테이블과 동일한 RFC 4180 구문 분석을 렌더링합니다. 내가 원하는 비교가 실제로 멤버십에 관한 것이라면 어떤 값이 한 파일에 나타나지만 어떤 행이 변경되었는지보다는 다른 파일에 나타나지 않는 값이 표시됩니다 두 목록 도구 비교 는 단일 열에 산술을 설정하고 더 적합합니다. 그리고 데이터가 API 가 소비 할 수있는 무언가가 될 필요가있을 때,the CSV 에서 JSON 변환기 는 다음 홉입니다. 이들 중 어느 것도 데이터를 업로드하지 않으므로 두 번째 생각없이 동일한 개인 파일에 연결할 수 있습니다. 이런 종류의 데이터 작업을위한 키트를 조립하는 경우 내 웹 개발자 툴킷 가이드 조각들이 어떻게 연결되는지 살펴봅니다.

자주 묻는 질문

두 개의 CSV 파일을 어떻게 비교합니까? 열다 CSV 차이점 검사기를 하고,첫 번째 상자에 원본 CSV 를 붙여넣고 두 번째 상자에 변경된 CSV 를 붙여넣고 구분 기호와 헤더 설정을 확인하고 키 열이나 위치 일치를 선택한 후 비교를 클릭합니다. 결과는 추가,제거, 변경된 행으로 분할되며,변경된 각 행은 서로 다른 정확한 셀을 보여줍니다. 모든 것이 브라우저에서 실행되므로 파일은 절대 업로드되지 않습니다.

키 매칭과 포지션 매칭의 차이점은 무엇인가요? 다음과 같이 선택한 열에서 동일한 값을 공유하는 키 일치 쌍 행입니다 id따라서 레코드는 두 파일 중 하나에 나타나는 모든 위치에서 해당 레코드와 비교됩니다. 위치 일치는 파일 순서의 행 1과 행 1을 비교합니다. 다시 정렬할 수 있는 내보내기에는 키 일치를 사용하고, 추가 전용 로그와 같은 고정 순서 파일에는 위치 일치를 사용합니다.

데이터가 거의 이동하지 않았을 때 텍스트 차이가 변경된 모든 줄을 표시하는 이유는 무엇입니까? 텍스트 diff 는 파일을 한 줄씩 순서대로 비교하기 때문에. 내보내기가 다시 정렬되면 거의 모든 줄이 새 위치에 놓이고 diff 는 기본 레코드가 동일하더라도 전체 파일을 변경된 것으로 표시합니다. CSV diff 는 파일을 행과 열로 구문 분석하고 키를 기준으로 레코드를 비교하므로 다시 정렬하면 효과가 없으며 정품 변경 사항만 보고됩니다.

어떤 특정 셀이 연속으로 변경되었는지 표시됩니까? 예. 일치하는 행이 다를 경우 도구는 변경된 각 열을 이름으로 나열하고 새 값 옆에 이전 값을 표시합니다. 활성에서 닫힌 상태로 이동한 상태 열만 전체 행에 플래그를 지정하지 않고 해당 단일 셀을 보고하는 행입니다.

어떤 구분 기호를 지원합니까? 쉼표, 세미콜론, 탭 및 파이프. 구분 기호는 처음 여러 줄에 걸쳐 일관된 열 수를 생성하는 구분 기호를 선택하여 첫 번째 파일에서 자동 감지되며, 데이터에 대한 감지가 잘못되었을 때 수동으로 재정의할 수 있습니다.

키 열에 중복된 값이 있으면 어떻게 되나요? 이 도구는 키 열에 중복 항목이 포함되어 있음을 경고하고 각 키의 첫 번째 행만 비교합니다. 중복 키는 일반적으로 열이 진정한 고유 식별자가 아니라는 것을 의미하므로 경고는 diff 를 신뢰하기 전에 다른 키를 선택하거나 데이터를 정리하라는 프롬프트입니다.

내 CSV 파일이 아무데나 업로드되나요? 아니요. 모든 구문 분석 및 비교는 일반 JavaScript 로 브라우저에서 로컬로 실행됩니다. 전송,로그 또는 저장되는 것은 없으며 요청이 나타나지 않는 네트워크 탭에서 확인할 수 있습니다. 또한 이 도구는 페이지가 로드된 후에도 오프라인으로 계속 작동합니다.

얼마나 큰 파일을 처리할 수 있나요? 키 매칭은 중첩된 루프가 아닌 해시 맵을 사용하므로 대략 선형적으로 확장되고 수만 개의 행을 편안하게 처리합니다. 실용적인 한계는 비교 자체가 아니라 브라우저가 매우 큰 결과 세트를 렌더링하는 것입니다.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!