大容量CSVファイルを分割する方法|行数指定・サイズ指定・条件分割
大容量のCSVファイルは、Excelで開くと行数制限に引っかかったり、システムへのアップロード上限を超えたりします。こうした場合、CSVを分割する必要が生じます。分割方法はツールによって異なり、単純に行数で切るのか、条件で仕分けるのかで選択肢が変わります。本記事では、ブラウザ・デスクトップ・コマンドラインの4つの方法を比較し、用途に応じた選び方を解説します。
注記: 第三者ツールの仕様は執筆時点(2026年4月)の情報です。最新の機能や制限は各ツールの公式サイトで確認してください。
CSV分割ツール比較——ブラウザ・デスクトップ・コマンドライン
大容量CSVを分割するには、大きく4つのアプローチがあります。それぞれ得意な用途が異なり、導入の手軽さ、処理速度、条件分割への対応可否で選択肢が分かれます。
| ツール/方法 | 導入 | 行数指定 | サイズ指定 | 条件分割 | ヘッダー複製 | 推奨用途 |
|---|---|---|---|---|---|---|
| LeapRows(※筆者開発ツール) | ブラウザのみ | △ | △ | ✓ | ✓ | 条件分割(フィルタが必要な場合) |
| CSV Splitter | Windows GUI | ✓ | ✓ | ✗ | ✓ | Excel対応サイズへの分割 |
| 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 Splitter | output_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分~ |
分割はあくまで制約への対処法であり、本来の課題解決ではないことを忘れないでください。