데이터·개발

CSV 데이터 검사·중복 정리

CSV의 누락·중복·열 개수·수식 의심 값을 검사하고, 선택한 규칙으로 정리한 파일을 받습니다.

직접 실행하는 예제와 결과 해석 보기 ↓
브라우저 실행 데이터 비저장 무료

UTF-8 CSV · 첫 레코드는 열 이름 · 최대 2MiB / 데이터 20,000레코드 / 100열 / 500,000셀

선택해서 적용하는 정리 규칙

기본값은 검사만 수행합니다. 공백 정리 → 빈 레코드 제거 → 중복 제거 순서로 적용합니다. 빈 기준 값과 열이 어긋난 레코드는 중복으로 삭제하지 않습니다.

CSV를 입력하거나 아래 예제를 실행하세요. 입력 데이터는 서버로 전송되지 않습니다.

CSV는 UTF-8 BOM·CRLF로 저장합니다. 모든 셀을 따옴표로 감싸도 스프레드시트의 숫자·수식 자동 해석을 막지는 않습니다. 검사 보고서는 통계·옵션·문제 위치를 담으며 셀 원문은 포함하지 않습니다.

CHECK BEFORE IMPORT

표를 변환하기 전에, 어떤 값이 달라질 수 있는지 확인하세요.

주문 내역이나 설문 결과를 합쳤을 때 빈 수량, 같은 번호, 열이 밀린 레코드가 섞일 수 있습니다. 이 도구는 문제 위치를 원본 레코드와 줄 번호로 알려주고 선택한 정리 규칙의 전후 결과를 보여줍니다. 원래 값을 추정해 채우거나 숫자로 바꾸지 않습니다.

01

사용 방법

입력부터 결과 활용까지 네 단계로 진행합니다.

  1. 1파일 또는 텍스트 입력

    첫 레코드가 열 이름인 UTF-8 CSV를 준비하고 구분자를 맞춥니다.

  2. 2검사와 기준 열 선택

    한 번 검사한 뒤 주문 번호처럼 중복 판단에 쓸 열을 선택합니다.

  3. 3정리 규칙 검토

    공백·빈 레코드·중복 제거가 필요한 경우에만 체크하고 다시 검사합니다.

  4. 4차이를 확인하고 저장

    제거된 원본 번호와 남은 경고를 살펴보고 정리 CSV와 보고서를 받습니다.

삭제 전 확인

같은 번호라고 언제나 잘못된 중복은 아닙니다.

한 주문에 상품이 여러 개면 주문 번호가 같은 레코드가 정상일 수 있습니다. 중복 제거는 선택한 열의 문자열이 정확히 같은 경우 첫 번째 레코드만 남깁니다. 공백 정리를 켜면 정리된 값으로 비교하고, 대소문자와 Unicode 표현은 구분합니다.

!

빈 값은 합치지 않음기준 열이 비어 있는 레코드는 중복 제거 대상에서 제외합니다.

!

열 오류는 직접 수정열이 어긋난 레코드를 임의로 자르거나 부족한 값으로 채우지 않습니다.

✓

원본 위치 보존정리 후에도 경고에는 원본 레코드 번호와 시작 줄 번호를 표시합니다.

툴하루에서 만든 검증용 데이터

주문 CSV를 정리하면서 값이 사라지는 이유를 확인합니다

다음 자료는 실습을 위해 직접 만든 가상 주문 목록입니다. 중복 번호, 앞뒤 공백, 빈 수량, 빈 레코드를 의도적으로 넣었습니다. 아래 버튼은 현재 입력과 정리 옵션을 바꿉니다. 필요한 작업 결과는 먼저 저장하세요.

1. 먼저 삭제 없이 문제를 찾기

order_id,product,qty,note
00123,노트,2,정상
00123,노트,2,중복 주문
00124, 펜 ,1,앞뒤 공백
00125,지우개,,수량 확인
,,,
00126,파일철,1,"쉼표, 포함"
원본 CSV 다운로드

버튼은 order_id를 기준 열로 지정합니다. 헤더를 제외하면 데이터는 6개 레코드이고, 두 번째 주문의 번호가 첫 번째 주문과 같습니다. 원본 3번 레코드에 중복 경고가 표시되지만 검사만 할 때에는 두 주문 모두 남습니다.

‘빈 셀 5개’는 수량이 없는 셀 1개와 빈 레코드의 셀 4개를 더한 숫자입니다. 경고 건수는 잘못된 주문 수와 같지 않습니다. 한 셀이 빈 값과 빈 기준 값 경고에 동시에 포함될 수 있습니다.

2. 정리 전후를 비교하고, 해결되지 않은 문제 남겨두기

예상 정리본 다운로드

이 실습에서는 두 번째 00123 주문을 중복 수집한 자료라고 가정합니다. 공백 제거, 빈 레코드 제거, 중복 기준 값 제거를 모두 선택하면 원본 3번과 6번 레코드가 빠집니다. 상품명 ‘ 펜 ’은 ‘펜’으로 바뀌고, 수량이 없는 주문은 남습니다.

항목검사만세 규칙 적용
데이터 레코드64
중복 기준 값10
빈 레코드10
앞뒤 공백 셀10
빈 셀51

빈 수량을 0이나 1로 채우지 않는 이유: 미주문·미입력·무료 제공·재고 부족은 같은 의미가 아닙니다. 주문 원본에서 수량을 확인해 직접 고쳐야 합니다. 이 도구는 데이터의 구조를 검사하며 업무상 정답을 판단하지 않습니다.

코드 앞의 0도 파일에는 그대로 남습니다. CSV 다운로드와 예상 정리본을 텍스트로 비교해보세요. 출력은 모든 셀을 큰따옴표로 감싼 UTF-8 BOM·CRLF 형식이므로 원본의 따옴표 배치나 줄바꿈 바이트와는 다를 수 있습니다.

3. 열 개수가 다른 자료는 자동으로 잘라내지 않기

sku,name,qty
A01,노트,2,extra
A02,펜
열 오류 원본 다운로드

헤더는 3열인데 원본 2번 레코드는 4열, 3번 레코드는 2열입니다. 열 개수 불일치는 2건이고 CSV 다운로드가 비활성화됩니다. 마지막 값을 삭제하거나 빈 열을 채우는 것은 의도를 추정하는 작업이므로 자동 처리하지 않습니다.

예를 들어 상품명 자체에 쉼표가 있다면 "노트, 파랑"처럼 셀 전체를 큰따옴표로 감싸야 합니다. 잘못된 구분자를 선택했을 때도 비슷한 증상이 생깁니다. CSV가 탭이나 세미콜론으로 구분되었는지 먼저 확인하세요.

4. 긴 번호·수식 의심 값·셀 안 줄바꿈을 구분하기

code,external_id,note
00123,9007199254740993,=1+1
00124,9007199254740994,"첫째 줄
둘째 줄"
식별자 예제 다운로드

데이터 레코드는 2개입니다. 마지막 메모는 두 줄이지만 큰따옴표 안에 있어 한 셀로 읽습니다. 앞자리 0 경고 2개, 긴 정수 경고 2개, 수식 의심 셀 1개가 나옵니다. 브라우저에서는 =1+1을 계산하지 않고 원문 텍스트로 보여줍니다.

외부 식별자는 문자열 그대로 유지됩니다. 스프레드시트로 옮길 때는 코드와 외부 식별자 열을 텍스트로 가져오세요. 수식 의심 값을 자동으로 무해하게 바꾸지는 않으므로 신뢰할 수 없는 자료를 바로 실행하는 방식으로 열지 마세요.

검사 결과를 해석하는 기준

경고 수보다 어떤 레코드가 바뀌는지 살펴보세요

  1. 헤더도 레코드 번호에 포함됩니다. 1번은 열 이름, 첫 데이터는 2번입니다. 줄바꿈이 든 셀이 있으면 레코드 번호와 파일의 줄 번호가 다릅니다. ‘시작 줄’은 해당 레코드가 시작된 원본 텍스트의 줄입니다.
  2. 공백은 데이터일 수 있습니다. 기본 검사는 앞뒤 공백을 보존합니다. 공백 정리를 선택하면 JavaScript의 trim 기준으로 스페이스·탭·줄바꿈 등 가장자리 공백을 제거하며, 셀 중간의 공백은 유지합니다.
  3. 중복 기준은 단일 열의 정확한 문자열입니다. ‘abc’와 ‘ABC’, ‘1’과 ‘01’은 다르게 봅니다. 여러 열을 묶는 복합 키나 의미가 비슷한 이름의 유사도 비교는 하지 않습니다. 단일 열로 식별할 수 없다면 중복 제거를 끄세요.
  4. 정상 형식이 정확한 업무 내용은 아닙니다. 날짜가 실제 배송일인지, 이메일이 존재하는지, 수량 합계가 주문과 맞는지는 검사하지 않습니다. 열이 맞고 경고가 없어도 원본 자료와 대조해야 합니다.
  5. 일부 CSV 방언은 직접 맞춰야 합니다. UTF-8과 첫 레코드 헤더를 전제로 쉼표·탭·세미콜론을 지원합니다. LF·CRLF·CR 줄바꿈을 읽고, 큰따옴표 안의 큰따옴표는 두 번 쓰는 방식을 사용합니다. 닫는 따옴표 뒤의 추가 문자나 닫히지 않은 따옴표는 오류로 중단합니다.

문제 위치 표는 최대 250개, 미리보기는 처음 20개 데이터 레코드로 제한하지만 통계는 입력 한도 안의 전체 자료를 셉니다. 다운로드한 정리 CSV에는 전체 결과가 들어갑니다. 보고서의 상세 문제 목록은 화면과 같은 250개 제한이며, 전체 문제 건수를 별도로 기록합니다.

다음 단계: 정리한 주문 4건을 JSON으로 전달하기

이 예제에서 만든 정리 CSV를 다른 시스템으로 전달한다면 원본 → 정리 → JSON 전체 실습을 이어서 진행하세요. 예상 JSON을 내려받고 주문번호의 앞자리 0, 빈 수량, 쉼표가 있는 메모가 그대로 남는지 확인합니다.

자동 변환을 끄면 수량도 문자열입니다. 받는 시스템의 자료형 규칙과 빈 수량의 의미를 확인한 뒤 전달하세요. 이 연결 실습은 에 검토했습니다.

예제 작성·기능 검토: 툴하루 · . CSV 인용 규칙 참고: RFC 4180 · 수식 주의사항: OWASP CSV Injection. 지원 범위와 경고 기준은 이 도구의 구현을 기준으로 설명했습니다. 재현 가능한 오류 제보

02

대표적인 사용 사례

실제 작업에서는 이렇게 활용할 수 있습니다.

ORDER

주문 목록 합치기

같은 주문 번호가 재수집된 것인지 품목별 레코드인지 구분한 뒤 중복을 정리합니다.

SURVEY

설문 내보내기 점검

빈 응답과 줄바꿈이 포함된 자유 응답을 확인하고 열 개수가 일치하는지 검사합니다.

IMPORT

상품 코드 보존

00123 같은 코드와 긴 식별자를 찾고, 가져오기 프로그램에서 열 형식을 텍스트로 지정합니다.

03

자주 묻는 질문

사용 전 알아두면 좋은 기준을 정리했습니다.

CSV와 엑셀 파일 모두 지원하나요?

UTF-8 CSV·TSV 텍스트만 지원합니다. XLSX·XLS는 원본 프로그램에서 CSV UTF-8로 내보내세요. 첫 레코드는 열 이름으로 처리하며 2MiB·데이터 20,000레코드·100열·500,000셀 중 먼저 도달한 한도까지 지원합니다.

경고가 있으면 잘못된 데이터인가요?

아닙니다. 빈 값이 선택 항목일 수 있고 음수가 수식 경고에 포함될 수도 있습니다. 업무 규칙은 도구가 알 수 없으므로 사용자가 판단해야 합니다. 열 개수와 열 이름 문제는 다운로드 전에 수정하도록 합니다.

정리한 CSV의 앞자리 0은 유지되나요?

파일에는 문자열 그대로 남습니다. 다만 CSV에는 열의 자료형이 없어 Excel 등에서 다시 숫자로 해석할 수 있습니다. 파일을 더블클릭하기보다 데이터 가져오기에서 코드 열을 텍스트로 지정하세요.

수식 의심 값을 자동으로 안전하게 바꾸나요?

자동으로 제거하거나 변형하지 않습니다. 경고는 보수적인 패턴 점검이며 안전 판정이 아닙니다. 신뢰할 수 없는 CSV를 스프레드시트로 열 때에는 프로그램의 가져오기·수식 설정도 확인해야 합니다.

검사 데이터와 보고서가 서버에 저장되나요?

검사와 파일 생성은 브라우저 안에서 실행됩니다. 입력과 결과는 서버로 전송되지 않습니다. 도구 실행 여부만 기존 이용 통계로 집계하며, 보고서는 사용자가 직접 다운로드할 때 저장됩니다.

RELATED WORKFLOW

검사한 표를 다음 작업으로 옮기기

1CSV 검사중복·누락·열 위치 확인
2원본 대조삭제 전후·경고 확인
3변환 또는 가져오기자료형·수식 설정 확인