大容量CSVファイルを分割する方法|行数指定・サイズ指定・条件分割

大容量のCSVファイルは、Excelで開くと行数制限に引っかかったり、システムへのアップロード上限を超えたりします。こうした場合、CSVを分割する必要が生じます。分割方法はツールによって異なり、単純に行数で切るのか、条件で仕分けるのかで選択肢が変わります。本記事では、ブラウザ・デスクトップ・コマンドラインの4つの方法を比較し、用途に応じた選び方を解説します。

注記: 第三者ツールの仕様は執筆時点(2026年4月)の情報です。最新の機能や制限は各ツールの公式サイトで確認してください。

CSV分割ツール比較——ブラウザ・デスクトップ・コマンドライン

大容量CSVを分割するには、大きく4つのアプローチがあります。それぞれ得意な用途が異なり、導入の手軽さ、処理速度、条件分割への対応可否で選択肢が分かれます。

ツール/方法導入行数指定サイズ指定条件分割ヘッダー複製推奨用途
LeapRows(※筆者開発ツール)ブラウザのみ条件分割(フィルタが必要な場合)
CSV SplitterWindows GUIExcel対応サイズへの分割
split(Linux/macOS)コマンドライン行数の正確な制御が必要な場合
Pythonスクリプト複雑な条件や大規模バッチ処理

ブラウザツールは使いやすいですが大容量ファイルに非対応のことが多く、Windows GUIツールは身近ですが柔軟性に欠けます。コマンドラインツールは大規模ファイルで高速ですがスクリプト知識が必要です。Pythonは自由度が最大ですがセットアップに手間がかかります。

各ツールの詳細は以下の通りです。

LeapRows でCSVをフィルタしてエクスポート(条件分割)

LeapRows(※筆者開発ツール)は、ブラウザ上でCSVを読み込み、フィルタ条件を指定してエクスポートする手法です。Excelを使う感覚で、部門別・地域別・売上ランク別にデータを仕分けられる点が特徴です。

条件分割の利点は、単なる行数分割と異なり、データの意味を保ったまま分割できることです。たとえば販売データで「東京支店」「大阪支店」に振り分けるといったことが可能です。分割後のファイルは各々独立したCSVとなり、ヘッダー行も複製されるため、後処理は不要です。各ファイルは当該部門にそのまま配布できる状態になります。

LeapRowsの設定手順はシンプルです。以下の流れで完成します。

ステップ実行内容
1. アップロードCSVファイルをブラウザにドラッグ&ドロップ
2. 条件指定フィルタ条件を設定(カラム・値・演算子)
3. エクスポートマッチするデータをCSVで出力。ファイル名は手動で指定

特にデータの意図的な仕分けが必要な場合は、GUIでの条件設定が圧倒的に楽です。導入コストはゼロで、ブラウザさえあれば動作します。数秒の処理で分割が完了し、データの漏れや破損も発生しません。

CSV Splitter(Windows GUI・行数/サイズ指定)

CSV SplitterはWindows向けのGUIツールです。行数またはファイルサイズを指定して自動分割します。インストール後、ファイルを選択して数字を入力し、実行するだけです。ダイアログに従うだけで、プログラミング知識は不要です。

得意な用途はExcelの行数制限(104万8,576行)に合わせた分割です。「100万行ごとに分割」のように単純な指定で事足りる場合に向いています。ヘッダー行も分割後のすべてのファイルに自動複製されるため、各ファイルを独立したデータセットとして扱えます。数百メガバイトのファイルであれば数秒で分割が完了し、待ち時間は最小限です。

CSV Splitterの操作フローは以下の通りです。

段階操作内容
インストール公式サイトからダウンロード・セットアップ(初回のみ)
ファイル選択分割対象のCSVを指定
分割値入力行数またはサイズを数値で指定
実行ボタンをクリック →数秒で分割完了

Windows専用で、条件分割には非対応です。「部門ごとに分ける」といった要件には向きません。行数または容量での機械的な分割のみが可能で、フィルタ条件は使えません。

splitコマンド(Linux/macOS標準)

Linux/macOSの split コマンドは、OSに標準搭載されているため別途インストールが不要です。コマンドラインから直接実行でき、スクリプト化も容易です。ターミナルに慣れているなら最速の方法です。

実行例:

split -l 100000 input.csv output_

これで10万行ごとにファイルが分割されます。別のコマンドと組み合わせることで、より複雑な処理も実行できます。Windowsの場合は、PowerShellでスクリプトを書くことで同様の処理が可能ですが、split のようなワンライナーでは実行できません。

コマンドラインツールの特徴を以下にまとめました。

観点内容
導入インストール不要(Linux/macOS標準搭載)
実行速度大規模ファイルで高速(GUIのオーバーヘッドなし)
自動化バッチ処理・スクリプト化に最適
ヘッダー処理自動復帰しない(手動対応が必要)
条件分割基本コマンドでは非対応

ヘッダー行を自動復帰しないため、分割後のファイルに手動でヘッダーを付け加える必要があります。また、条件分割には対応していません。スクリプトの組み合わせで対応することは可能ですが、初心者には難しいでしょう。

Pythonスクリプト(柔軟な条件分割)

Pythonで分割ロジックを書けば、あらゆる条件分割に対応できます。以下は部門列で振り分ける例です。

import pandas as pd

df = pd.read_csv('input.csv')
for dept in df['部門'].unique():
    subset = df[df['部門'] == dept]
    subset.to_csv(f'output_{dept}.csv', index=False)

Pythonは複数の条件を組み合わせたり、行数と条件の両方で制御したり、特定の日付範囲でフィルタしたりするなど、柔軟性が最大です。データ変換を分割と同時に行うこともできます。

Pythonでの実装ステップを以下に示します。

フェーズ作業内容所要時間
セットアップPythonのインストール、pandasライブラリ導入10〜15分
スクリプト作成分割ロジックの記述・テスト15〜20分
実行・検証スクリプト実行、出力ファイル確認5分以上
再利用同様の処理が必要な際はスクリプト流用1〜2分

初心者にとっては敷居が高く、初回セットアップに30分以上かかることが多いです。しかし、スクリプトを一度書けば何度も再利用できるため、定期的にCSVを分割する必要があれば投資する価値があります。技術者向けの方法です。

用途別——どの分割方法を選ぶか

Excelで開くために104万行以下に分けたい

Excelの最大行数は1,048,576行(正確には104万8,576行)です。CSVがこれを超える場合、Excelで開けません。ファイルが切り詰められるか、開く際にエラーが出ます。

この用途での分割方法を比較します。

ツール処理時間ヘッダ自動付与推奨度
CSV Splitter数秒✓ あり
コマンドラインsplit数秒~数十秒✗ なし

単純に行数で分割するなら、CSV Splitterやコマンドラインのsplitで十分です。ヘッダー行が必要な場合はCSV Splitterを推奨します。GUI操作なら数秒で終わり、すべてのファイルにヘッダーが自動付与されます。

e-TaxやECモールのアップロード上限に合わせたい

e-Taxや楽天などのECモールは、アップロードファイルのサイズや行数に制限を設けていることが多いです。その場合も行数またはサイズで分割すれば対応できます。CSV SplitterやLeapRows(※筆者開発ツール)で指定上限に合わせて分割してください。

部署・地域などの条件でファイルを仕分けたい

販売データを支店ごと、請求データを部門ごとに分けるといった、意図的な仕分けが必要な場合はLeapRows(※筆者開発ツール)またはPythonを使います。LeapRowsはGUIで直感的に条件設定でき、Pythonは複雑な条件にも対応できます。

CSV分割で失敗しないための3つの注意点

ヘッダー行の扱い

分割後のファイルすべてに元のCSVのヘッダー行を含めるべきか、それとも最初の1ファイルだけに含めるべきか。これはダウンストリームのシステムやツールの仕様に左右されます。

ヘッダー対応の方針を整理しました。

処理シーンヘッダー対応対応ツール
各ファイルを独立して処理すべてのファイルに含めるLeapRows、CSV Splitter(自動)
ツールが単一ファイル前提最初の1ファイルのみコマンドライン、Python(手動)

コマンドラインツールやPythonでは手動対応が必要になる場合があります。事前にダウンストリームの仕様を確認しておきましょう。

文字コードが分割後に変わる問題

特にWindows環境では、元のCSVがShift-JISだったのに、分割後がUTF-8に変わることがあります。アップロード先がShift-JIS限定だと、文字化けの原因になります。

ツール別の文字コード対応を確認しましょう。

ツール入力側判定出力側設定注意点
LeapRows自動判定自動判定(出力時は明言しない)明記なし
CSV Splitter手動指定可手動指定可Windows環境では慎重に
コマンドラインスクリプト側で制御スクリプト側で制御高度な知識が必要

分割ツール選択時に、元ファイルの文字コードと出力の文字コード設定を確認し、保持されるか変換されるかを把握しておくことが重要です。

分割後のファイル名と連番ルール

分割後のファイルには自動的に連番が付きます。ツールによって形式が異なるため、注意が必要です。

各ツールの命名ルールは以下の通りです。

ツール命名形式
LeapRows手動指定output_Tokyo.csv(ユーザーが指定)
CSV Splitteroutput_1.csv、output_2.csv などoutput_1.csv、output_2.csv
コマンドラインsplitアルファベット+連番outputaa、outputab、outputac など
Python任意に指定可output_{dept}.csv(カスタマイズ可)

アップロード時にファイル名の並び順が重要な場合は、ツールの命名仕様を事前に確認してください

まとめ——分割の前に「本当に分割が必要か」を考える

CSVの分割は、容量制限やシステムの制約に対応するための手段に過ぎません。ただし、分割そのものが処理をシンプルにするとは限りません。むしろ、ファイル管理が複雑になったり、後で統合する手間が増えたり、自動化が難しくなったりすることもあります。

分割の前に、一度立ち止まって「本当にこのCSVを分割する必要があるか」を問い直す価値があります。以下の選択肢を検討してみてください。

  • システムが大容量CSV対応なら:分割は不要
  • 部門ごとの分析が目的なら:CSVそのものにフィルタ機能を持たせる方が効率的
  • データ分析目的なら:分析ツールやデータベースに直接読み込む検討も選択肢

用途別の最適なアプローチをまとめました。

ニーズ推奨方法所要時間
単純な行数分割コマンドライン(CLI)数秒
条件分割が必要LeapRows(※筆者開発ツール)最速
複雑な要件Python実装初回30分~

分割はあくまで制約への対処法であり、本来の課題解決ではないことを忘れないでください