CSV와 엑셀 — 실제로 무엇이 다른가
CSV에서 벌어지는 헷갈리는 일은 거의 전부 한 가지 사실에서 나옵니다. CSV 파일은 자기 값이 무엇인지 모릅니다. 엑셀이 대신 짐작하고, 그 짐작이 자료를 망가뜨립니다.
수정
CSV는 글자입니다. 형식은 그게 전부입니다.
CSV는 쉼표로 나뉜 글자 줄입니다. 그 밖에는 아무것도 없습니다 — 칸의 자료형도, 수식도, 서식도, 여러 시트도, 열 너비도 없습니다. CSV 안의 `007`은 글자 셋일 뿐, 숫자도 문자열도 아닙니다. 파일이 어느 쪽인지 말하지 않습니다.
.xlsx는 정반대입니다. 칸마다 어떤 값이고 어떻게 보여야 하는지를 적어 둔 압축 꾸러미입니다. 그래서 더 크고, 그래서 열었다 저장해도 그대로 남습니다.
엑셀이 CSV를 열 때 자료에 하는 일
파일이 자료형을 말해 주지 않으니 엑셀이 짐작합니다. 평균적으로는 합리적이고, 특정한 경우에는 파괴적입니다.
- 앞자리 0이 사라집니다. `007`이 `7`이 됩니다. 우편번호·계좌번호·품번이 늘 당합니다.
- 날짜처럼 생긴 것이 날짜가 됩니다. `1-2`가 1월 2일이 됩니다. 엑셀이 유전자 이름 SEPT2를 계속 날짜로 바꾸는 바람에 유전학자들이 유전자 이름 규칙을 바꾼 유명한 사건이 있습니다.
- 긴 숫자가 지수 표기로 바뀌며 뒷자리를 잃습니다. 16자리 식별번호가 `1.23457E+15`로 돌아오고, 나중에 서식을 바꿔도 잃은 자리는 돌아오지 않습니다.
- 그리고 저장하면 손상이 저장됩니다. 원본 파일은 맞았고, 엑셀이 다시 써 낸 파일이 틀린 것입니다.
글자가 깨지거나, 전부 한 열에 들어가는 이유
서로 다른 두 문제인데 둘 다 "파일이 말해 줄 수 없는 전제"에 관한 것입니다.
인코딩. CSV는 자기 문자 인코딩을 적어 두지 않습니다. 윈도우 엑셀은 오랫동안 UTF-8이 아니라 지역 코드페이지를 가정해 왔고, 그래서 한글이 깨져 들어옵니다. 파일 앞에 UTF-8 BOM을 붙이면 대개 해결됩니다.
구분자. 쉼표를 소수점으로 쓰는 나라에서는 표 계산 프로그램이 쉼표 대신 세미콜론을 쓰고 또 그것을 기대합니다. 그런 파일을 다른 곳에서 열면 모든 줄이 한 열에 들어갑니다. 파일이 깨진 게 아니라 두 프로그램이 쉼표의 뜻을 다르게 알고 있는 것입니다.
파일이 그냥 너무 클 때
표 계산 프로그램에는 약 1,048,576행이라는 단단한 천장이 있고, 거기 닿기 훨씬 전부터 느려집니다. 전부 편집할 수 있게 하려고 통째로 메모리에 올리기 때문입니다.
어느 크기를 넘으면 파일을 여는 대신 파일에 묻는 쪽이 맞습니다. 필요한 열 몇 개만 고르고, 거르고, 묶고, 세면 몇 초 만에 답이 나옵니다 — 볼 생각도 없던 수백만 칸을 기계가 그리느라 애쓰지 않아도 됩니다.
Parquet, 짧게
CSV에 계속 데인다면, 분석 쪽이 옮겨 간 곳이 Parquet입니다. 자료형이 파일 안에 들어 있어 짐작할 것이 없습니다. 줄이 아니라 열 단위로 저장하므로 쉰 개 중 세 개만 읽으면 대략 세 열만큼의 바이트만 읽습니다. 압축도 잘 돼서 같은 CSV의 5~10분의 1인 경우가 흔합니다.
대가는 텍스트 편집기로 열어 볼 수 없다는 것입니다. 눈으로 보는 형식이 아니라 묻는 형식입니다.
업로드 없이 지금 해 보기
엑셀이 CSV를 망가뜨리지 않게 하려면?
더블클릭으로 열지 마세요. 데이터 → 텍스트/CSV에서 가져오기를 쓰면 변환되기 전에 인코딩을 정하고 열을 텍스트로 지정할 수 있습니다. 아니면 파일에 직접 질의하고 표 계산 프로그램이 아예 손대지 않게 하세요.
CSV가 엑셀 파일보다 작나요?
대개 아닙니다. 의외로들 여기는데, .xlsx는 압축된 꾸러미이고 zip은 반복되는 글자를 잘 줄입니다. 반면 CSV는 압축 안 된 글자입니다. Parquet은 둘 다 큰 차이로 이깁니다.
데이터베이스 없이 CSV에 질의할 수 있나요?
됩니다. 저희 데이터 도구는 브라우저 탭 안에서 SQL 엔진을 돌리고 파일을 디스크에서 바로 읽습니다 — 업로드가 없고, 세울 서버도 데이터베이스도 없습니다.
읽어 둘 만한 글
- HEIC 파일이란 무엇이고, 왜 안 열릴까
- PNG·JPG·WebP·AVIF — 무엇을 골라야 할까
- PDF 용량이 큰 이유 — 그리고 실제로 줄이는 것
- MOV와 MP4 — 실제로 무엇이 다른가
- 배경 제거는 실제로 어떻게 동작하나 — 그리고 언제 실패하나
- AI 업스케일은 없던 세부를 되살릴까
- SRT와 VTT — 어느 자막 파일이 필요한가
- 스템이란 무엇이고, 완성된 곡을 정말 되풀 수 있나
- PDF가 안 열립니다 — 왜일까요
- AI 요약을 믿어도 될까
- WAV와 MP3 — 실제로 어느 쪽이 필요한가
- 코덱이란 무엇이고, MP4와는 어떻게 다른가
- 제 영상은 왜 옆으로 누워 있을까