CSV 파일을 더블클릭하면 Excel이 90초쯤 고민하다가 세 가지 중 하나가 일어납니다. 분명 전체 파일이 아닌 무언가가 열립니다. 파일이 완전히 로드되지 않았습니다라는 대화상자가 뜹니다. 아니면 응답 없음 상태가 되어 커피나 한 잔 타러 가게 됩니다.
셋 다 파일이 깨졌다는 뜻이 아닙니다. 파일이 여는 도구보다 크다는 뜻입니다. 그래도 안을 들여다보는 방법을 정리했습니다. 데스크톱에서 제대로 처리하는 도구와, 메일에 첨부된 파일을 휴대폰에서 열어야 할 때 쓸 수 있는 도구를 모두 다룹니다.
빠른 답
- 데스크톱에서 보고 쿼리만 하려면: DuckDB를 쓰세요. 명령 하나면 되고 가져오기 단계가 없으며 기가바이트급도 처리합니다.
- 데스크톱에서 Excel을 계속 쓰려면: 시트 격자가 아니라 Power Query로 데이터 모델에 불러오세요.
- 휴대폰이나 태블릿이라면: 큰 파일용으로 만든 CSV 앱을 쓰세요. 읽고 쿼리하려면 Smart CSV Viewer, 행을 고치려면 CSV Editor입니다.
- 절대 하지 말 것: 메모장으로 여는 것, 그리고 일부만 불러온 도구에서 원본 위에 덮어쓰는 것.
나머지는 Excel이 포기하는 이유, 지금 다루는 파일이 어떤 상태인지 확인하는 방법, 그리고 어떤 방법이 내 파일에 맞는지를 설명합니다.
Excel이 파일을 열지 못하는 이유
Excel에는 구조적인 한계가 있고, RAM을 더 사도 협상이 되지 않습니다.
- 1,048,576행. 2²⁰이며 워크시트의 높이입니다. 300만 행짜리 파일은 얼마를 들여도 시트 하나에 들어가지 않습니다.
- 16,384열. 문제가 되는 일은 드물지만, 분석 도구에서 내보낸 가로로 넓은 파일은 여기에 걸립니다.
- 셀당 32,767자. 긴 JSON이나 메일 본문 전체를 한 필드에 담은 CSV는 아무 말 없이 잘립니다.
- 메모리. 행 한계에 닿기 훨씬 전에 Excel은 극도로 느려집니다. 400MB짜리 CSV는 모든 값을 파싱하고 형식을 지정하고 색인하고 나면 메모리에서 수 기가바이트로 불어날 수 있습니다.
위험한 것은 조용한 실패
열리지 않는 파일은 성가실 뿐입니다. 비용을 치르게 하는 쪽은 열리는 파일입니다.
CSV가 행 한계를 넘으면 Excel은 처음 1,048,576행만 불러오고 경고를 딱 한 번 보여 줍니다. 그 대화상자를 닫고 필요한 만큼 필터링해 저장하면, 잘린 지점 이후의 행이 모두 빠진 파일을 만든 것이고 어디가 이상한지 눈에 띄는 표시도 없습니다. 열 머리글은 맞고, 데이터도 맞아 보입니다. 다만 전부 있지 않을 뿐입니다.
가벼운 CSV 뷰어 상당수, 그중에는 모바일 앱도 여럿 포함해서 마찬가지입니다. 화면 반응을 유지하려고 처음 몇천 행만 읽고 그 사실은 언급하지 않습니다. 큰 파일을 어떤 도구에 맡기기 전에, 그 도구가 보여 주는 행 수가 원본 파일의 행 수와 같은지 확인하세요.
먼저 파일 상태 확인하기
이후의 모든 것은 두 숫자로 정해집니다. 파일 크기와 행 수입니다.
macOS나 Linux에서:
ls -lh big.csv # file size
wc -l big.csv # row count (add 1 for the header)
head -5 big.csv # what the columns actually look like
Windows PowerShell에서:
Get-Item big.csv | Select-Object Length
Get-Content big.csv -ReadCount 1000 | Measure-Object -Line
Get-Content big.csv -TotalCount 5
이 head는 보기보다 중요합니다. '깨진' CSV의 절반은 쉼표 대신 세미콜론으로 구분된 파일(유럽 대부분 지역의 표준입니다)이거나, 첫 번째 열 이름에 바이트 순서 표시(BOM)가 붙어 있는 파일입니다. 크기를 탓하기 전에 이것부터 확인해 두세요.
방법 고르기
| 상황 | 알맞은 도구 |
|---|---|
| 안을 보고, 세고, 쿼리를 실행하기 | DuckDB |
| Excel에 남아야 하고 피벗 테이블이 필요함 | Power Query + 데이터 모델 |
| 스프레드시트에 들어가는 크기로 쪼개기 | split 또는 csvkit |
| 반복 분석, 파일 간 조인 | SQLite 또는 DuckDB |
| 한 열의 값만 읽기 | csvcut 또는 대용량 파일용 텍스트 편집기 |
| 파일이 휴대폰에 있음 | 큰 파일용 CSV 앱 |
| 행을 편집해서 다시 저장하기 | CSV Editor 또는 데스크톱 CSV 앱 |
데스크톱에서
DuckDB, 2026년의 정답
이 가이드에서 하나만 가져간다면 이것입니다. DuckDB는 무료 단일 파일 데이터베이스로, 가져오기 단계 없이 CSV를 바로 읽고 터무니없이 빠릅니다.
설치한 뒤(brew install duckdb, winget install DuckDB.cli, 또는 duckdb.org에서 다운로드) 다음을 실행합니다.
duckdb -c "SELECT * FROM 'big.csv' LIMIT 20"
duckdb -c "SELECT count(*) FROM 'big.csv'"
duckdb -c "DESCRIBE SELECT * FROM 'big.csv'"
세 번째 명령은 모든 열과 추론된 타입을 보여 주며, 처음 보는 내보내기 파일을 이해하는 가장 빠른 방법인 경우가 많습니다. 그다음부터는 그냥 SQL입니다.
duckdb -c "SELECT region, sum(amount) AS total
FROM 'big.csv'
GROUP BY region
ORDER BY total DESC"
더 작은 파일을 뽑아서 Excel에서 열고 싶다면:
duckdb -c "COPY (SELECT * FROM 'big.csv' WHERE year = 2026)
TO 'subset.csv' (HEADER, DELIMITER ',')"
파일 전체를 메모리에 올리지 않으므로 파일 크기는 더 이상 문제가 아닙니다. 단점은 SQL을 쓸 줄 알아야 하고 터미널 도구라는 점입니다.
Power Query, Excel에 남아야 할 때
행이 워크시트에 닿지 않는다면 Excel은 100만 행보다 훨씬 많은 데이터도 다룰 수 있습니다. Power Query와 데이터 모델이 그 용도입니다.
Excel에서 데이터 → 데이터 가져오기 → 파일에서 → 텍스트/CSV에서를 선택합니다. 나타나는 미리 보기 창에서 로드는 누르지 마세요. 그 옆의 화살표를 눌러 다음으로 로드... 항목을 고르고, 연결만 만들기를 선택한 뒤 데이터 모델에 이 데이터 추가를 체크합니다.
이제 행은 격자가 아니라 Excel의 열 기반 엔진에 있으며, 여기에는 1,048,576행 한계가 적용되지 않습니다. 피벗 테이블과 차트는 평소처럼 만들 수 있습니다. 못 하는 것은 원본 행을 스크롤하며 훑어보는 일인데, 400만 행을 스크롤하는 것은 애초에 목적이 아니었으니 대개 괜찮습니다.
조각으로 나누기
스프레드시트에 들어갈 크기의 조각이 필요할 때가 있습니다. macOS나 Linux에서:
split -l 500000 big.csv chunk_
사람들이 자주 걸려드는 함정이 하나 있습니다. 머리글 행은 첫 번째 조각에만 붙습니다. 나머지에도 붙이려면:
head -1 big.csv > header.txt
for f in chunk_*; do cat header.txt "$f" > "with_header_$f"; done
csvkit은 이 작업을 제대로 해내고, 그 밖의 일도 많이 합니다. csvcut -c 1,4 big.csv는 특정 열을 뽑고, csvgrep -c status -m failed big.csv는 행을 필터링하고, csvstat big.csv는 모든 열을 요약합니다. 아주 큰 파일에서는 DuckDB보다 느리지만, 단순한 셸 도구가 처리하지 못하는 따옴표와 필드 안 줄바꿈을 이해합니다.
SQLite, 반복해서 볼 때
이 파일을 두 번 넘게 다시 열어 볼 예정이거나 다른 파일과 조인해야 한다면, 한 번만 불러 두세요.
sqlite3 data.db
.mode csv
.import big.csv sales
.headers on
SELECT count(*) FROM sales;
그 뒤로는 모두 즉시 끝납니다. DuckDB와 비교한 단점은, 테이블을 먼저 직접 정의하지 않으면 SQLite가 모든 것을 텍스트로 가져온다는 점입니다.
텍스트 편집기, 단서가 붙습니다
원본 행을 보기만 하면 된다면, 대용량 파일을 다룰 수 있는 편집기가 가장 간단합니다.
- EmEditor(Windows)는 바로 이 용도로 만들어졌고 수 기가바이트 파일도 무리 없이 엽니다. 유료이며 평가판이 있습니다.
- Sublime Text는 대부분의 편집기보다 큰 파일을 훨씬 잘 다룹니다.
- BBEdit(macOS)는 편집 엔진에 엄격한 파일 크기 제한이 없습니다.
- VS Code는 대략 50MB를 넘으면 애를 먹이고 많은 기능이 꺼집니다.
- 메모장은 파일 전체를 메모리에 올리려 하다가 컴퓨터를 통째로 멈추게 합니다. Notepad++는 괜찮지만 기본 메모장은 안 됩니다.
Google Sheets와 다른 클라우드 스프레드시트
Google Sheets는 스프레드시트 하나당 1,000만 셀이 한계입니다. 넉넉해 보이지만 셀 수는 행 × 열입니다. 30열짜리 내보내기 파일은 약 33만 행에서 한계에 닿습니다. 게다가 먼저 파일 전체를 업로드해야 합니다. 큰 CSV에는 대개 가장 쉬운 길이 아니라 가장 느린 길입니다. Apple Numbers는 100만 행, 1,000열로 더 엄격합니다.
파일이 휴대폰에 있을 때
앞의 어느 방법으로도 해결되지 않는 경우이고, 인터넷의 데스크톱 중심 조언이 시사하는 것보다 훨씬 흔합니다. 내보내기 파일이 메일에 첨부되어 있고, 책상에 있지 않은데, 지금 당장 안에 뭐가 들었는지 알아야 합니다. 터미널도 Power Query도 없고, 기본 제공 파일 미리 보기는 원본 텍스트 첫 화면만 보여 주고 멈춥니다.
해법은 파일 크기를 예외 상황이 아니라 출발점이 되는 요구 사항으로 다루는 앱입니다.
파일 전체를 연 다음 자유롭게 파고들 수 있습니다. SQL 쿼리, 시각적 필터, 차트, 일상 언어로 물어볼 수 있는 AI 어시스턴트, PDF 내보내기를 지원합니다.
기능여기까지가 읽기입니다. 행을 바꾸고 파일을 다시 저장하는 것은 다른 일이며, 앞서 말한 잘림 문제를 조심해야 합니다. 파일의 일부만 조용히 불러온 모바일 편집기는 일부만 조용히 다시 씁니다.
50만 행 파일도 스프레드시트처럼 편집합니다. Excel 방식의 정렬과 필터, 수식 열, 실행 취소와 다시 실행, 그리고 무료 버전을 포함해 저장할 때 모든 행이 보존됩니다.
기능하지 말아야 할 네 가지
- 기본 메모장으로 열지 마세요. 스트리밍 없이 파일 전체를 메모리에 올려서, 큰 파일이면 컴퓨터가 멈춥니다.
- '다른 컴퓨터에서 해 보려고' 파일을 자기 자신에게 메일로 보내지 마세요. 대부분의 메일 서버는 첨부 파일을 25MB 안팎으로 제한하고, 제한하지 않는 서버는 다시 인코딩합니다.
- 원본 위에 덮어쓰지 마세요. 언제나 사본으로 작업하세요. 이 습관 하나가 잘림 사고를 별일 아닌 일로 바꿉니다.
- 확인하지 않은 행 수를 믿지 마세요.
wc -l이나SELECT count(*)를 실행해서 도구가 보여 주는 값과 비교하세요. 서로 다르다면 거짓말을 하는 쪽은 도구입니다.