본문 바로가기
코딩취미/프로그램 지식

소프트웨어별 CSV 최대 줄(Row) 수 제한 : excel, XLSX, Google Sheets, MySQL

by 브링블링 2025. 3. 12.
반응형

소프트웨어별 CSV 최대 줄(Row) 수 제한 : excel, XLSX, Google Sheets, MySQL 

소프트웨어별 CSV 파일의 최대 줄(Row) 수 제한은 각 프로그램 및 라이브러리의 메모리 할당 방식과 32비트/64비트 환경에 따라 다릅니다. 주요 소프트웨어 및 라이브러리의 CSV 처리 한계를 정리하면 다음과 같습니다.

📌 소프트웨어별 CSV 최대 줄(Row) 수 제한

소프트웨어/라이브러리 최대 줄 수 제한 설명
Microsoft Excel (XLSX) 1,048,576 줄 한 워크시트에서 열 수 있는 최대 행 수 (XLSX 기준)
Microsoft Excel (CSV 열기) 약 1,048,576 줄 메모리 한계에 따라 다를 수 있음
Google Sheets 10,000,000 셀 예를 들어 10개 열이 있다면 최대 약 1,000,000줄
LibreOffice Calc 1,048,576 줄 엑셀과 동일한 최대 한계
Apache OpenOffice Calc 1,048,576 줄 LibreOffice와 동일
Python Pandas 이론적으로 무제한 메모리(RAM) 한계에 의해 결정됨
Python CSV 라이브러리 이론적으로 무제한 한 줄씩 처리 가능하므로 메모리 제한을 적게 받음
R (data.table, read.csv 등) 이론적으로 무제한 메모리 크기에 따라 달라짐
Microsoft Access 2GB 파일 크기 제한 파일 크기 내에서 줄 수가 결정됨
Google BigQuery 5TB 파일 크기 제한 행(Row) 개수에 대한 제한은 없음
MySQL (CSV IMPORT) 4,294,967,295 줄 테이블의 최대 행 수에 따라 달라짐 (InnoDB 기준)
PostgreSQL (CSV IMPORT) 2^32 (~40억 줄) 테이블 크기에 의해 제한됨
SQLite 약 2TB 파일 크기 제한 행 개수는 테이블 크기에 따라 달라짐

📌 CSV 크기 문제를 해결하는 방법

1️⃣ 엑셀에서 큰 CSV 파일을 다룰 때

엑셀의 1,048,576줄 제한을 초과하는 CSV를 열려면 텍스트 편집기 또는 Pandas (Python) 을 사용해야 합니다.

import pandas as pd

df = pd.read_csv("large_file.csv", chunksize=100000)  # 10만 줄씩 나누어 처리
for chunk in df:
    print(chunk.head())  # 일부 데이터 확인
 

해결법: chunksize를 사용하여 한 번에 메모리에 적재할 수 있는 데이터 크기를 조정


2️⃣ Google Sheets에서 10M 셀 제한 해결법

Google Sheets는 10,000,000 셀(예: 10개 열이면 최대 1,000,000줄)까지만 허용됩니다.
이보다 큰 데이터를 다루려면 BigQuery 또는 Google Colab + Pandas를 사용하는 것이 좋습니다.

from google.colab import auth
import gspread
from google.auth import default

auth.authenticate_user()
creds, _ = default()
gc = gspread.authorize(creds)

sh = gc.create("Large CSV Data")
worksheet = sh.get_worksheet(0)
worksheet.update([df.columns.values.tolist()] + df.values.tolist())
 

해결법: gspread를 사용하여 데이터를 Google Sheets로 나누어 업로드

반응형

3️⃣ 데이터베이스(MySQL, PostgreSQL) 사용

대용량 CSV 파일을 처리할 때는 데이터베이스에 저장 후 분석하는 것이 효율적입니다.

MySQL로 CSV 데이터 Import

LOAD DATA INFILE '/path/to/large_file.csv'
INTO TABLE my_table
FIELDS TERMINATED BY ','  
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

PostgreSQL로 CSV 데이터 Import

COPY my_table FROM '/path/to/large_file.csv' WITH (FORMAT csv, HEADER true);
 

해결법: 데이터베이스에 적재하여 SQL로 분석


📌 결론

  • 엑셀: 1,048,576줄 제한 → Pandas 또는 데이터베이스 활용 필요
  • Google Sheets: 10M 셀 제한 → BigQuery 또는 Colab 사용
  • Python Pandas: 메모리 한계 없음 → chunksize 활용하여 처리 가능
  • 데이터베이스(MySQL, PostgreSQL): 대량 데이터 처리 가능, 성능 최적화 필요

📌 대용량 CSV 데이터를 다룰 때는 Excel이 아닌 Pandas 또는 데이터베이스를 사용하는 것이 가장 효율적입니다! 🚀

반응형