CSV ファイルをダブルクリックすると、Excel は 90 秒ほど考え込み、次の 3 つのどれかが起こります。明らかにファイル全体ではない中途半端な内容が開く。「ファイルが完全に読み込まれませんでした」というダイアログが出る。あるいは応答なしになり、コーヒーを淹れに行くことになる。
どれもファイルが壊れているという意味ではありません。開こうとしたツールに対してファイルが大きすぎる、というだけです。ここでは、それでも中身を見る方法を紹介します。デスクトップできちんと扱えるツールと、メールに添付されたファイルをスマホで開くときに使えるツールの両方です。
最短の答え
- デスクトップで、中身を見てクエリを実行するだけなら: DuckDB を使います。コマンド 1 つ、インポート不要で、数 GB でも扱えます。
- デスクトップで、Excel のままで済ませるなら: シートのグリッドではなく、Power Query でデータ モデルに読み込みます。
- スマホやタブレットなら: 大きなファイル向けの CSV アプリを使います。読み取りとクエリは Smart CSV Viewer、行の編集は CSV Editor です。
- やってはいけないこと: メモ帳で開くこと。そして、一部しか読み込んでいないツールで元のファイルに上書き保存すること。
以下では、Excel が諦める理由、手元のファイルがどういう状態かを調べる方法、そしてどの方法がそのファイルに合うかを説明します。
Excel で開けない理由
Excel には構造上の厳しい上限があり、メモリを増設しても変わりません。
- 1,048,576 行。 これは 2²⁰ で、ワークシートの高さです。300 万行のファイルは、いくら払っても 1 枚のシートには収まりません。
- 16,384 列。 問題になることはまれですが、分析ツールからの横長のエクスポートでは上限に当たります。
- 1 セルあたり 32,767 文字。 長い JSON や、メール本文まるごとを 1 つのフィールドに入れた CSV は、何も言われずに切り捨てられます。
- メモリ。 行数の上限よりずっと手前で、Excel は極端に遅くなります。400MB の CSV は、すべての値を解析し、型を付け、インデックスを作ると、メモリ上で数 GB に膨らむことがあります。
本当に危険なのは、静かに失敗する場合
開かないファイルは面倒なだけです。開いてしまうファイルのほうが実害を出します。
CSV が行数の上限を超えると、Excel は最初の 1,048,576 行だけを読み込み、警告を 1 回だけ出します。そのダイアログを閉じて、必要な行に絞り込み、保存すると、切れ目より後ろの行がすべて抜けたファイルを書き出したことになります。しかも、何かがおかしいという目に見えるサインはありません。列見出しは正しく、データも正しく見えます。ただ、全部は入っていないのです。
軽量な CSV ビューアの多く、モバイル向けのものも含めて、同じことが起こります。画面の反応を保つために最初の数千行だけを読み、そのことには一切触れません。大きなファイルをツールに任せる前に、そのツールが表示する行数が元ファイルの行数と一致しているか確認してください。
まず、ファイルの状態を確認する
以降の判断は 2 つの数字で決まります。ファイルのサイズと、行数です。
macOS または Linux の場合:
ls -lh big.csv # file size
wc -l big.csv # row count (add 1 for the header)
head -5 big.csv # what the columns actually look like
Windows PowerShell の場合:
Get-Item big.csv | Select-Object Length
Get-Content big.csv -ReadCount 1000 | Measure-Object -Line
Get-Content big.csv -TotalCount 5
この head は見た目以上に重要です。「壊れた」CSV の半分は、カンマではなくセミコロン区切り(ヨーロッパの多くの地域では標準です)か、最初の列名にバイトオーダーマーク(BOM)がくっついているファイルです。サイズのせいにする前に、これを確かめておきましょう。
方法を選ぶ
| 状況 | 向いているツール |
|---|---|
| 中身を見る、数える、クエリを実行する | DuckDB |
| Excel のままで、ピボットテーブルを作りたい | Power Query + データ モデル |
| スプレッドシートに収まるサイズに分割したい | split または csvkit |
| 繰り返し分析する、ファイル同士を結合する | SQLite または DuckDB |
| 1 列の値だけ読みたい | csvcut または大きなファイル対応のテキストエディタ |
| ファイルがスマホにある | 大きなファイル向けの CSV アプリ |
| 行を編集して保存し直したい | CSV Editor、またはデスクトップの CSV アプリ |
デスクトップの場合
DuckDB: 2026 年の答え
このガイドから 1 つだけ持ち帰るなら、これにしてください。DuckDB は無料の単一ファイルのデータベースで、CSV をインポートなしで直接読み込み、驚くほど高速です。
インストールします(brew install duckdb、winget install DuckDB.cli、または duckdb.org からダウンロード)。そのうえで:
duckdb -c "SELECT * FROM 'big.csv' LIMIT 20"
duckdb -c "SELECT count(*) FROM 'big.csv'"
duckdb -c "DESCRIBE SELECT * FROM 'big.csv'"
3 つ目は、すべての列と推定された型を表示します。初めて見るエクスポートを理解するには、たいてい最速の方法です。そこから先は普通の SQL です:
duckdb -c "SELECT region, sum(amount) AS total
FROM 'big.csv'
GROUP BY region
ORDER BY total DESC"
Excel で開けるような小さいファイルを書き出したいときは:
duckdb -c "COPY (SELECT * FROM 'big.csv' WHERE year = 2026)
TO 'subset.csv' (HEADER, DELIMITER ',')"
ファイル全体をメモリに読み込むことはないので、ファイルサイズは問題になりません。注意点は、SQL を書ける必要があることと、ターミナルのツールであることです。
Power Query: Excel から出られないとき
行がワークシートに載らない限り、Excel は 100 万行をはるかに超えるデータを扱えます。そのための仕組みが Power Query とデータ モデルです。
Excel で、データ → データの取得 → ファイルから → テキストまたは CSV から を選びます。表示されるプレビュー ウィンドウで、読み込みは押さないでください。その横の矢印を押して 読み込み先... を選び、接続の作成のみ を選んで このデータをデータ モデルに追加する にチェックを入れます。
これで行はグリッドではなく Excel の列指向エンジンに入り、1,048,576 行の上限は適用されません。ピボットテーブルやグラフは通常どおり作れます。できないのは生の行をスクロールして見ることですが、400 万行をスクロールするのが目的だったことはないので、たいてい問題ありません。
分割する
スプレッドシートに収まるサイズの塊が必要なこともあります。macOS または Linux では:
split -l 500000 big.csv chunk_
つまずきやすい点が 1 つあります。ヘッダー行が付くのは最初の塊だけです。ほかの塊にも付けるには:
head -1 big.csv > header.txt
for f in chunk_*; do cat header.txt "$f" > "with_header_$f"; done
csvkit ならこれを正しく処理でき、ほかにもいろいろできます。csvcut -c 1,4 big.csv は特定の列を取り出し、csvgrep -c status -m failed big.csv は行を絞り込み、csvstat big.csv は各列を集計します。非常に大きなファイルでは DuckDB より遅いものの、素朴なシェルツールが苦手な引用符や、フィールド内の改行を理解します。
SQLite: 何度も見るなら
このファイルに 3 回以上戻ってくる、または別のファイルと結合する必要があるなら、一度だけ読み込みます:
sqlite3 data.db
.mode csv
.import big.csv sales
.headers on
SELECT count(*) FROM sales;
その後はどの操作も一瞬です。DuckDB と比べた欠点は、先に自分でテーブルを定義しない限り、SQLite がすべてをテキストとして取り込むことです。
テキストエディタ: 注意つき
生の行を見るだけなら、大きなファイルに対応したエディタが一番手間がかかりません。
- EmEditor(Windows)はこの用途のために作られていて、数 GB のファイルも問題なく開きます。有料で、試用版があります。
- Sublime Text は、ほとんどのエディタよりずっと大きなファイルに強いです。
- BBEdit(macOS)は、編集エンジンにファイルサイズの厳密な上限がありません。
- VS Code は 50MB あたりから厳しくなり、多くの機能が無効になります。
- メモ帳はファイル全体をメモリに読み込もうとして、マシンごと巻き込んで落ちます。Notepad++ は問題ありませんが、標準のメモ帳はだめです。
Google スプレッドシートなどのクラウド表計算
Google スプレッドシートは、1 つのスプレッドシートにつき 1,000 万セルが上限です。多そうに聞こえますが、セル数は行 × 列です。30 列のエクスポートなら、約 33 万行で上限に達します。さらに、先にファイル全体をアップロードしなければなりません。大きな CSV では、たいてい一番楽な方法ではなく一番遅い方法です。Apple Numbers はさらに厳しく、100 万行・1,000 列までです。
ファイルがスマホにあるとき
ここまでの方法がどれも当てはまらないのがこのケースで、ネットにあるデスクトップ前提の助言が示すより、ずっとよくある状況です。エクスポートはメールに添付されていて、机にはおらず、今すぐ中身を知りたい。ターミナルも Power Query もなく、標準のファイル プレビューは最初の 1 画面ぶんの生テキストを見せて終わりです。
解決策は、ファイルサイズを例外ではなく最初の要件として扱うアプリです。
ファイル全体を開いたうえで、問い合わせができます。SQL クエリ、ビジュアルなフィルタ、グラフ、普通の言葉で質問できる AI アシスタント、PDF エクスポートに対応しています。
できることここまでは読み取りの話です。行を変更してファイルを保存し直すのは別の作業で、先ほどの切り捨ての問題に注意が必要です。ファイルの一部しか読み込まなかったモバイルの編集アプリは、黙って一部だけを書き戻します。
50 万行のファイルでもスプレッドシート感覚で編集できます。Excel 風の並べ替えとフィルタ、数式列、元に戻す・やり直し、そして無料版を含め、保存時にすべての行が保持されます。
できることやってはいけない 4 つのこと
- 標準のメモ帳で開かない。 ストリーミングなしでファイル全体をメモリに読み込むため、大きなファイルではマシンが固まります。
- 「別のパソコンで試す」ために自分宛にメールで送らない。 多くのメールサーバーは添付ファイルを 25MB 前後に制限していて、制限しないサーバーは再エンコードします。
- 元のファイルに上書き保存しない。 作業は必ずコピーで行ってください。この習慣ひとつで、切り捨ての事故が何事でもなくなります。
- 確認していない行数を信用しない。
wc -lやSELECT count(*)を実行して、ツールの表示と比べてください。食い違うなら、嘘をついているのはツールです。