CSV 열 순서 바꾸면 칸 수 다른 행에 생기는 일

CSV 표에서 유독 특정 행만 값이 한 칸씩 밀려 있거나, 마지막 칸이 자주 비어 있는 것을 본 적이 있다면 파일이 깨진 게 아닙니다. 그 행의 칸(열) 개수가 원래 헤더보다 적거나 많기 때문에 생기는 일입니다.
CSV 열 순서를 바꾸는 도구를 포함해, 구분자 기준으로 값을 나누는 대부분의 프로그램은 모자란 칸을 만나면 맨 뒤에 빈 칸을 채우고, 남는 칸은 맨 뒤에서 그대로 잘라냅니다. 어느 칸이 실제로 비어 있었는지는 알려주지 않습니다.
요약 ① 행의 칸 수가 헤더보다 적으면, 모자란 만큼 항상 맨 뒤에 빈 칸이 채워집니다. ② 행의 칸 수가 헤더보다 많으면, 초과분은 항상 맨 뒤에서 그대로 잘려 사라집니다. ③ 어느 칸이 원래 비어 있었는지는 알려주지 않으므로, 순서를 바꾸기 전에 칸 수부터 직접 세어 확인해야 합니다.
칸 수가 다른 행, 왜 문제가 되나
직원 명단 CSV(이름, 부서, 직급, 연봉)를 정리하다, 아직 직급이 정해지지 않은 신입 사원의 행에서 '직급' 칸과 그 앞뒤 쉼표까지 함께 지워버렸다고 해봅니다. 이 행은 칸이 세 개뿐이라 헤더의 네 칸보다 하나 모자랍니다.
이 CSV를 열 순서 바꾸기 도구에 그대로 붙여 넣으면, 모자란 칸은 자동으로 맨 뒤에 채워집니다. 그런데 이 행에서 진짜 비어 있던 칸은 세 번째인 '직급'인데, 빈 칸은 언제나 마지막 칸에만 채워지므로 원래 연봉 자리에 있던 숫자가 한 칸 앞으로 당겨져 '직급' 자리에 들어가고, 정작 비어야 할 '연봉' 칸이 대신 빈 칸이 됩니다.
화면만 보면 모든 칸이 채워져 있어 정상처럼 보이지만, 실제로는 그 행의 값 전체가 한 칸씩 밀린 상태입니다. 열 순서를 바꾸는 작업 자체는 정확하게 되더라도, 밀려 있는 값까지 그대로 옮길 뿐이라 밀림은 고쳐지지 않습니다.
순서를 바꾸기 전, 칸 수부터 이렇게 확인합니다
도구 없이도 확인할 수 있습니다. 엑셀이나 구글시트에 CSV를 표로 나누지 않고 텍스트 그대로 한 칸에 붙여 넣은 뒤, 다음 수식으로 그 칸에 구분자가 몇 개 들어 있는지 셀 수 있습니다.
=LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1
이 값은 그 줄에 쉼표로 나뉜 칸이 몇 개인지를 뜻합니다. 헤더가 있는 첫 줄에 같은 수식을 넣어 나온 숫자와 각 데이터 행의 숫자를 나란히 비교하면, 어느 행이 헤더보다 칸이 적거나 많은지 바로 찾아낼 수 있습니다. 구분자가 세미콜론이나 탭이면 수식의 쉼표(",") 자리만 그 문자로 바꾸면 됩니다.
행이 몇 줄 안 되면 눈으로 쉼표 개수를 세는 것도 방법입니다. 다만 행이 수십 줄을 넘어가면 수식 없이 세는 건 실수하기 쉽고, 매번 반복하기도 번거롭습니다.
저희 도구로 확인하기. 칸 수를 일일이 세지 않아도, CSV를 붙여넣고 '열 정보 불러오기'를 누르면 헤더가 몇 개로 인식됐는지 열 블록 개수로 바로 보이고, 화살표로 순서를 바꾼 뒤 결과 CSV까지 곧바로 만들어 줍니다.
무료 · 가입 불필요 · 붙여넣은 CSV는 브라우저 밖으로 전송되지 않습니다

자주 막히는 지점
| 상황 | 실제로 벌어지는 일 |
|---|---|
| 행의 칸이 헤더보다 적음 | 모자란 만큼 맨 뒤에 빈 문자열이 채워집니다(원래 비어 있던 위치가 아닙니다) |
| 행의 칸이 헤더보다 많음 | 헤더 개수를 넘는 칸은 맨 뒤에서 그대로 잘려 사라집니다 |
| 완전히 빈 줄(공백만 있는 줄) | 파싱 전에 걸러져 결과에 아예 나타나지 않습니다 |
| 값 앞뒤에 있던 공백 | 열 정보를 불러오는 과정에서 함께 제거됩니다 |
| 구분자가 파이프(|)나 다른 문자 | 쉼표·세미콜론·탭 세 가지 중에서만 고를 수 있습니다 |
표에서 특히 눈에 띄는 건 칸이 넘치는 행입니다. 값 안에 구분자가 실수로 하나 더 들어가면 그 줄만 칸이 하나 늘어나는데, 이 경우 초과된 마지막 칸이 통째로 사라지므로 원래 있던 데이터가 조용히 없어집니다.
정리
- 행의 칸 수가 헤더보다 적으면 모자란 만큼 맨 뒤에 빈 칸이 채워지고, 많으면 맨 뒤에서 그대로 잘립니다.
- 어느 칸이 원래 비어 있었는지는 위치만으로는 알 수 없어서, 중간 칸이 빈 행은 그 뒤 모든 값이 한 칸씩 밀린 것처럼 보일 수 있습니다.
- 순서를 바꾸기 전에 헤더와 각 행의 칸 수가 같은지 먼저 세어 확인하면 이 문제를 미리 걸러낼 수 있습니다.
- 완전히 빈 줄은 결과에서 자동으로 제외되고, 각 칸의 앞뒤 공백도 함께 정리됩니다.
무료 · 가입 불필요 · 붙여넣은 CSV는 브라우저 밖으로 전송되지 않습니다
자주 묻는 질문
칸이 모자란 행인지 미리 알아볼 방법이 있나요?
헤더 대비 각 행의 구분자 개수를 세어 비교하는 방법이 가장 확실합니다. 엑셀·구글시트에서 =LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1 수식으로 줄마다 칸 수를 구해 헤더 줄의 숫자와 다른 행을 찾아내면 됩니다. 도구에서는 '열 정보 불러오기'를 눌렀을 때 나오는 열 블록 개수가 헤더 칸 수와 같은지 확인하는 정도로 대략적인 점검이 가능합니다.
칸이 넘치는 행은 어느 부분이 잘리나요?
헤더 개수를 넘는 칸은 항상 맨 뒤에서부터 잘려 나갑니다. 예를 들어 헤더가 4칸인데 어떤 행에 6개의 값이 있다면 앞의 4개만 남고 5번째, 6번째 값은 그대로 사라집니다. 어느 칸이 원래 있던 값인지는 순서로 판단할 수 없으므로, 넘치는 행이 있다면 재정렬 전에 원본에서 값을 직접 확인하는 편이 안전합니다.
구분자가 쉼표·세미콜론·탭이 아니면 어떻게 하나요?
이 도구가 지원하는 구분자는 쉼표, 세미콜론, 탭 세 가지뿐입니다. 파이프(|)나 다른 문자로 구분된 파일이라면, 텍스트 편집기의 찾기/바꾸기로 그 구분자를 쉼표로 먼저 바꾼 뒤 붙여넣으면 됩니다. 다만 값 안에 원래 쉼표가 들어 있는 경우라면 이 방법으로 구분자와 값의 쉼표가 섞일 수 있으니, 그런 값이 없는지 먼저 확인하는 편이 좋습니다.
공백만 있는 빈 줄은 결과에 그대로 남나요?
아닙니다. 완전히 빈 줄(공백만 있는 줄)은 CSV를 읽어 들이는 단계에서 걸러지기 때문에 결과에 나타나지 않습니다. 일부러 빈 행을 구분선처럼 넣어 두었다면, 재정렬 후에는 그 빈 행이 사라진다는 점을 감안해야 합니다.
