스프레드시트

CSV를 열자 앞자리 0이 사라질 때, 식별번호를 그대로 가져오는 법

CSV 파일의 고객번호·상품코드·우편번호에서 앞자리 0이 사라질 때 원본 손실과 스프레드시트 자동 숫자 변환을 구분하고 안전하게 가져오는 방법을 설명합니다.

업무용 노트북 표에서 127로 보이는 코드와 원본 문서에 적힌 00127을 대조하며 데이터 열을 검수하는 책상 장면

고객번호가 ‘00127’인 CSV를 엑셀이나 스프레드시트로 열었는데 화면에는 ‘127’만 보이는 일이 있습니다. 이때 숫자 서식을 ‘00000’으로 바꾸면 다시 ‘00127’처럼 표시할 수 있지만, 원래 문자가 그대로 보존됐다는 뜻은 아닙니다. 식별번호는 더하거나 평균을 낼 대상이 아니므로 계산용 숫자가 아니라 문자 데이터로 다뤄야 합니다.

원본 CSV에 앞자리 0이 남아 있는지 확인한 다음, 남아 있다면 열을 텍스트로 지정해 다시 가져오는 방법을 택합니다. 원본 자체에서 이미 0이 사라졌다면 가져오기 설정만으로 정확한 값을 복원할 수 없습니다.

손상이 원본에서 일어났는지, 열 때 일어났는지

CSV는 쉼표 등 구분자로 값의 경계를 표시하는 텍스트 파일입니다. 파일 자체에는 스프레드시트의 ‘이 열은 숫자’라는 표시 형식이 붙어 있지 않습니다. 따라서 프로그램이 CSV를 직접 열면서 숫자처럼 보이는 값을 자동으로 변환할 수 있습니다.

가장 쉬운 비교는 복사한 CSV를 텍스트 편집기로 열어 해당 행의 원시 문자열을 보는 것입니다. 예를 들어 원본이 다음과 같다면 코드 문자열은 아직 남아 있습니다.

customer_code,quantity
00127,3
00042,12

이 파일을 표 프로그램으로 열어 127, 42가 보인다면 가져오는 과정의 데이터 형식 추정을 의심할 수 있습니다. 반면 텍스트 편집기로 연 원본부터 127, 42라면 데이터가 추출·내보내기 과정에서 이미 바뀌었을 수 있습니다. 그때는 원천 시스템이나 이전 파일에서 다시 내려받아야 합니다.

원본을 검사할 때도 파일을 다른 이름으로 복사해 사용하세요. 스프레드시트에서 잘못 변환된 파일을 다시 CSV로 저장해 덮어쓰면 이전의 문자 형태를 잃을 수 있습니다.

모든 숫자 열을 문자로 바꾸면 안 되는 이유

00127은 고객코드라면 다섯 글자 전체가 의미를 가집니다. 반면 수량 3은 계산해야 할 숫자입니다. 우편번호, 상품 SKU, 출고 로트번호, 계정 식별자처럼 자리수와 문자가 중요한 열을 텍스트로 보존하고, 금액·수량·측정값은 숫자 열로 구분해야 합니다.

특히 긴 주문번호도 주의 대상입니다. 자리수가 긴 숫자처럼 보이는 식별값은 일부 스프레드시트의 숫자 정밀도 한계나 자동 표기 방식 때문에 원래 값과 달라질 수 있습니다. 이 경우 앞자리 0뿐 아니라 뒷자리 숫자까지 달라질 위험이 있으므로 처음부터 텍스트로 불러오는 것이 안전합니다.

다만 날짜, 전화번호, 우편번호를 모두 동일한 규칙으로 처리하지는 않습니다. 분석용 날짜는 날짜형이 필요할 수 있고, 국제 전화번호와 코드값은 특수문자나 국가 접두부가 포함될 수 있습니다. 열의 의미를 먼저 정한 뒤 형식을 지정해야 합니다.

CSV를 ‘바로 열기’ 대신 가져오기로 처리한다

파일을 더블클릭해 자동으로 열지 말고, 사용하는 표 프로그램의 텍스트/CSV 가져오기 기능을 찾습니다. 프로그램 버전에 따라 메뉴 이름은 다르지만 일반적인 흐름은 비슷합니다.

  1. 원본 CSV의 복사본을 선택해 가져오기 화면을 엽니다.
  2. 구분 기호와 문자 인코딩을 확인해 행과 열이 올바르게 나뉘는지 미리 봅니다.
  3. 고객번호·상품코드처럼 식별자인 열을 선택하고 데이터 형식을 텍스트/문자열로 지정합니다.
  4. 수량·금액은 계산용 숫자로 유지하고, 변환된 결과를 원본과 비교합니다.
  5. 확인이 끝난 뒤 작업용 스프레드시트 형식으로 별도 저장합니다.

일부 서비스는 열 형식을 지정하는 가져오기 옵션이 제한적입니다. 그런 환경이라면 원본 파일을 직접 열어 저장하는 방식을 중단하고, 텍스트형 열을 지정할 수 있는 도구나 데이터 가져오기 절차를 사용해야 합니다. 셀에 나중에 0을 붙이는 처리는 원본을 이미 잃은 상태에서 임의로 새 값을 만드는 일이 될 수 있습니다.

보기에는 같은 코드라도 데이터가 다를 수 있다

다섯 자리 코드라는 사실이 확실하다면 127을 00127로 표시하는 서식을 줄 수도 있습니다. 그러나 이는 표시를 보정하는 방식일 뿐, 원본 복구를 증명하지 않습니다. 실제 코드 길이가 네 자리와 여섯 자리가 섞여 있다면 모든 값을 다섯 자리로 맞추는 일은 잘못된 결과를 만들 수 있습니다.

문자열 ‘00127’과 숫자 127은 비교·조인·중복 검사 결과에도 영향을 줍니다. 예를 들어 고객 목록에서는 00127이 고객의 고유 키인데 다른 시트에서 자동으로 127이 되었다면, 두 자료를 합칠 때 매칭이 빠지거나 잘못된 보정 규칙으로 다른 고객과 혼동할 수 있습니다.

금액 열에 숫자가 문자로 들어와 합계에서 누락되는 문제는 반대 방향의 오류입니다. 계산해야 할 값을 숫자로 변환하는 일이 궁금하다면 스프레드시트에서 숫자가 텍스트로 저장돼 합계가 틀릴 때를 참고하세요.

열었을 때 멀쩡해도 다시 저장하며 검증한다

실무에서는 가져오기 화면에서 코드가 올바르게 보였다는 이유만으로 작업을 마치는 경우가 있습니다. 그러나 다른 형식으로 저장하거나 다시 CSV로 내보내는 과정에서 동일한 변환이 반복될 수 있습니다.

대표값 세 개를 골라 검수해 보세요. 앞자리 0이 있는 코드, 자리수가 긴 코드, 숫자와 문자가 섞인 코드입니다. 가져온 값과 저장 후 다시 읽은 값을 각각 원본 문자열과 비교합니다. 전체 행 수가 같아도 코드가 달라졌다면 검증을 통과한 것이 아닙니다.

함께 일하는 사람에게는 ‘고객코드 열은 텍스트’처럼 열 단위 입력 규칙을 전달해야 합니다. 파일이 매주 반복해서 들어온다면 원본 데이터를 정리하기 전에 맞춰야 할 기준에서 설명하는 원본 보존·열 구조·검증 순서를 가져오기 절차에 포함할 수 있습니다.

원본에 코드가 남아 있는 한 문제를 해결할 가능성은 있습니다. 중요한 것은 보기 좋게 0을 채우는 속도가 아니라, 업무에서 식별자로 쓰는 글자 하나까지 이전과 동일하다는 사실을 확인하는 것입니다.