大容量CSVが開けない、またはアップロード上限を超える場合は、原因を「表計算ソフトの表示限界」「取込先の容量制限」「端末・ブラウザのメモリ」に分けます。ここでは320MB、約250万レコードの売上CSVを、1ファイル50MB未満に分割する例で説明します。
今回のケース:320MBの売上CSVを取り込む
- 元ファイル
sales_2026.csv- サイズ・件数
- 320MB・約250万レコード
- 取込先の上限
- 1ファイル50MB未満
- 必要な結果
- 各ファイルに同じヘッダーを付け、レコード順を保つ
単純計算で7分割すればよいとは限りません。各レコードのバイト数は異なり、引用符内の改行もあるため、安全なレコード境界で切ります。
「大きすぎる」の意味を切り分ける
| 制限 | 症状 | 対処の方向 |
|---|---|---|
| Excelの行数・表示 | 全行をシートに表示できない、操作が重い | 分割、データ取得機能、専用処理を検討 |
| 取込先のファイル容量 | 50MBなどの上限で拒否される | 上限より余裕を持って分割 |
| 取込先の件数・処理時間 | 容量内でもタイムアウトする | 件数上限、バッチ仕様を確認 |
| ブラウザ・端末メモリ | 処理中に固まる、保存できない | ストリーミング処理と十分な空き容量 |
Excelの行数上限とファイルサイズ上限は別物です。50MBでも行数が多いことがあり、320MBでも1レコードが巨大な場合があります。
改行位置やバイト位置で直接切ると壊れる
id,note
1,"1行目
2行目"
2,確認済み上の物理改行だけを基準に切ると、1件目の引用符内で分断されます。任意のバイト位置で切れば、UTF-8の多バイト文字自体を壊す可能性もあります。CSVの引用符を解析し、完全な論理レコード単位で分割します。
安全に分割する手順
- 元の
sales_2026.csvを保管します。 - 取込先の「50MB」が50MB以下か50MB未満か、ヘッダー有無、分割後の処理順を確認します。
- CSV分割ツールで、上限より余裕のある値を指定します。
- 「1行目をヘッダーとして扱う」と「各分割ファイルにヘッダーを付ける」を要件に合わせます。
- 分割数、各サイズ、全体のレコード数を確認します。
- 先頭・境界付近・末尾のファイルを開き、引用符内改行と日本語が保たれているか確認します。
ツールはレコードを途中で切らないため、単一レコードだけで指定サイズを超える場合、その分割ファイルは目標値を超えます。上限を必ず満たす保証ではなく、表示される警告を確認してください。
各ファイルのヘッダーと登録順
分割ファイルを個別に登録するシステムでは、各ファイルへ同じヘッダーが必要な場合があります。一方、最初のファイルだけヘッダーを許可する処理もあります。ツールの選択肢は取込仕様に合わせます。
連番ファイルは元レコード順で処理しても、取込先が登録順を保証するとは限りません。更新の前後関係が重要なら、処理順やキー重複時の動作も確認してください。分割後のデータレコード数の合計は元の約250万件と一致する必要があります。
容量以外の取り込み制限
ファイルが50MB未満でも、文字コード、BOM、区切り文字、列数、ヘッダー名、1回の最大件数、1レコードの最大長、必須項目、タイムアウトで失敗する場合があります。原因が複数ありそうならCSV文字コード・総合診断で基本構造を確認します。
数GBのCSVとブラウザ処理
CSV分割ツールはファイル全体を一度に文字列化せずチャンク単位で読みますが、実用上の上限はブラウザ、端末、保存先の空き容量に左右されます。通常ダウンロードで多くのBlobを保持するより、対応ブラウザの大容量モードで指定フォルダへ直接保存するほうがメモリ負荷を抑えられます。
業務上重要な数GB級データでは、小さなコピーで設定を検証し、必要ならデータベースや社内バッチなど再実行・監査がしやすい方法も検討してください。
まとめ
大容量CSVは、容量だけでなく行数、件数、メモリ、取込先仕様を切り分けます。分割はバイトや物理改行ではなくCSVレコード境界で行い、ヘッダー、順序、分割後の件数合計を確認してから本番へ取り込んでください。