CSV分割ツール

大きなCSVファイルを行数、ファイル数、またはファイルサイズを基準に小さなファイルへ分割します。各ファイルにはヘッダーが付き、引用符付きフィールドは壊れず、データはブラウザの外へ出ません。

ファイルはブラウザ内で処理され、アップロードされません。

ファイルはブラウザ内で処理され、アップロードされません。

分割の仕組み

ファイルをバイト列としてストリーム読み取りし、行の境界でのみ切り分けるため、出力ファイルはそれぞれ単体で正しいCSVになります。

  1. 1

    各行の終わりを見つける

    バイト列を1回だけ走査します。改行が行の終わりとみなされるのはダブルクォートの外にあるときだけなので、複数行の住所のような引用符内の改行で行が分断されることはありません。

  2. 2

    行の境界で切る

    行数指定: N行ごとに新しいファイルを開始します。ファイル数指定: まず総行数を数え、できるだけ均等に配分します。サイズ指定: 次の行を加えると上限を超える手前まで行を追加します。

  3. 3

    各ファイルを組み立てる

    出力ファイルは元のヘッダーのバイト列と、元ファイルのバイト範囲を組み合わせたものです。デコードも再エンコードもコピーも行わないため、数GBのファイルでもメモリを使い切らずに数秒で分割できます。

保持されるもの・対応していないもの

  • 行が途中で分割されることはありません。1行がサイズ上限より大きい場合、その行だけで1ファイルになります。
  • 引用符付きフィールドはRFC 4180に従います。引用符内のカンマ、改行、二重引用符("")はデータとして扱われます。
  • 区切り文字(カンマ、セミコロン、タブ、パイプ)は1行目から判定され、手動で変更できます。区切り文字は引用符の解釈とプレビューに影響し、行の終わりの判定には影響しません。
  • UTF-8 BOMとWindowsのCRLF改行は各ファイルに保持されるため、Excelで元ファイルと同じように開けます。
  • UTF-16ファイルはエラーメッセージを表示して拒否します。先にUTF-8で保存してください。1回の実行で作成できるファイルは最大5,000個です。
  • ZIPダウンロードは無圧縮(store)方式で、合計4 GBまでです。それ以上の場合はファイルごとにダウンロードできます。

計算例

どちらの例も組み込みサンプルを使っているので、読み込んですべての数値を確認できます。

12,000行の注文データを5,000行ずつに分割

「注文データ(12,000行)」サンプルを読み込み、「行数」を選んだまま 5000 を入力し、ヘッダーのスイッチはオンのままにします。

  1. 11行目の「order_id,order_date,…」がヘッダーです。残りの12,000行がデータ行です。
  2. 212,000 ÷ 5,000 = 2 ファイル分が満杯になり、2,000行が残るので、ファイルは3つになります。
  3. 3ファイル1と2は1〜5,000行目と5,001〜10,000行目、ファイル3は10,001〜12,000行目を含みます。
  4. 4各ファイルは同じヘッダー行で始まるため、行数はそれぞれ5,001行、5,001行、2,001行です。

結果: orders-2026_part_01.csv(5,000行)、orders-2026_part_02.csv(5,000行)、orders-2026_part_03.csv(2,000行)。合わせて元の12,000行と完全に一致します。

複数行メモ付きの600件のチケットを4ファイルに分割

「複数行メモ付きチケット」サンプルを読み込み、「ファイル数」を選んで 4 を入力します。

  1. 1notes列にはカンマ、二重引用符、改行を含む引用符付きテキストがあります。1回目の走査では引用符内の改行を無視して行数を数え、600件のデータ行を見つけます。
  2. 21ファイルあたりの行数 = ceil(600 ÷ 4) = 150。
  3. 3行は順番に配分されます: T-0001〜T-0150、T-0151〜T-0300、T-0301〜T-0450、T-0451〜T-0600。
  4. 4メモが3行にわたるチケットも1つのファイルに収まります。切り分けは引用符の外の行末でのみ行われるからです。

結果: 150件ずつの4ファイル。どのファイルを表計算ソフトで開いても、複数行のメモは1つのセルのままです。

よくある質問

このCSV分割ツールのファイル、ヘッダー、エンコーディングの扱いについて。

CSVはサーバーにアップロードされますか?

いいえ。ファイルはブラウザのFile APIで読み取られ、お使いの端末上でバイト範囲に分割されます。アップロードは発生せず、タブを閉じればすべて破棄されます。

どのくらい大きなCSVを分割できますか?

ファイルはストリーム処理されるため、サイズはメモリに影響しません。1 GBを超えるファイルも問題なく分割できます。実際の上限はZIPダウンロードの4 GBです。それ以上の結果はファイルごとにダウンロードしてください。

各出力ファイルにヘッダー行は残りますか?

はい。「1行目はヘッダー」がオンの場合、ヘッダーは各ファイルの先頭に繰り返されます。ヘッダーのないファイルではオフにすると、1行目はデータとして扱われます。

カンマや改行を含む引用符付きフィールドはどうなりますか?

そのまま保持されます。ダブルクォート内の改行は行の終わりではなくフィールドの一部として扱われ、二重引用符("")はエスケープされた引用符として認識されます。

対応している区切り文字は?

カンマ、セミコロン、タブ、パイプです。区切り文字は1行目から判定され、判定が間違っている場合は手動で変更できます。

分割したファイルはExcelで正しく開けますか?

はい。元ファイルにUTF-8 BOMやWindows改行がある場合、各ファイルにも保持されるため、Excelは元ファイルと同じように読み込みます。

行数とファイルサイズ、どちらで分割すべきですか?

出力先に行数制限がある場合(Excelの1シート1,048,576行や、一度に10,000行までのインポートツールなど)は行数で分割します。アップロードのサイズ制限がある場合はサイズで分割します。並列処理のために均等な塊が欲しい場合はファイル数で分割します。

分割したファイルを1つに戻すには?

連結して重複するヘッダー行を取り除きます。macOSやLinuxでは: head -n 1 part_01.csv > all.csv; tail -n +2 -q part_*.csv >> all.csv。Pythonではpandas.concatで同じことができます。