ByteScope

CSV Explorer

Excelが拒む数GB・数百万行のCSVを開いて、閲覧・ソート・フィルタ・クエリまで。ファイルはディスクから直接読み込まれ、アップロードは一切されません。

ファイルは端末から直接読み込まれ、ローカルに保持されます。解析、データベース、クエリの実行はすべてこのタブ内で完結します — アップロードなし、アカウント不要、サーバーにコピーも残りません。

ここに CSV ファイルをドロップ

サイズ制限なし — .csv、.tsv、.txt。クリックして選択も可能。

このツールについて

Excelの上限は1,048,576行。しかも実際にはそのずっと手前で使い物にならなくなります。900 MBのエクスポートを開こうとして20分待たされ、結局落ちる — そんなファイルを、このページは数秒で閲覧できる状態にします。CSVはディスクからチャンク単位でストリーミング読み込みされ、読みながら解析され、タブ内でWebAssemblyとして動く本物のSQLiteデータベースに取り込まれます。つまり上限はディスクの空き容量であって、RAMでも、1985年に誰かが決めた行数でもありません。実測では、1.08 GB・836万行のファイルが普通のノートPCのブラウザタブで約2分で取り込み完了しました。

何もアップロードされません。この規模のファイルを開ける他のサービスは、どれもまずファイルを自社サーバーに置かせようとします。顧客データ、給与データ、データベースのエクスポートにとって、それこそが一番やってはいけないことです。ここではFileハンドルをWeb Workerに渡し、file.stream()で読み込んで、オリジンプライベートファイルシステム(OPFS)内のデータベースに書き込みます。このサイトにはアップロード先のエンドポイント自体が存在しないので、誤って送信することすらできません。作業用データベースはページを離れると消去されます。

スクロールしている表は窓であって、ファイルそのものではありません。取得されるのはカーソル付近の行だけ — 取り込んだテーブルに対してLIMITOFFSETで一度に60行ほど — なので、900万行目も9行目と同じ速さで届きます。列の型(整数・実数・真偽値・日付・テキスト)は取り込み中に判定されますが、そのルールは「推測しない」ことです。0070912345678はテキストのままなので電話番号が壊れず、31/07/2026は日付として扱われません(日/月か月/日か誰にも判別できないため)。JavaScriptで正確に表せない大きさの整数も、黙って丸められる代わりにテキストのまま残ります。

ソートもフィルタもSQLバーも、内部では同じもの — 自分のテーブルに対するSQLです。列名は正しくクォートされるので、ヘッダーに引用符が含まれていても壊れません。入力した値はすべて、文に貼り付けられるのではなくバインドパラメータとして渡されます。SQLバー自体に制限はありません。あなたのマシン上の、あなたのデータベースなので、GROUP BYでもCREATE INDEXでも、必要なものは何でも実行できます。現在の表示やクエリの結果はCSVとして書き出せます。1行ずつストリーミングで書き出されるため、1,000万行のエクスポートに必要なのはバッファ1つ分で、1,000万個の文字列ではありません。

よくある質問

実際、どのくらい大きなCSVを開けますか?

メモリより大きくても開けます。何もメモリに保持されないからです。ファイルはストリーミングで読み込まれ、行はブラウザのオリジンプライベートファイルシステム内のSQLiteデータベースファイルに収まるので、実質的な上限はディスクの空き容量と、ブラウザがこのサイトに与えるストレージ容量です。数GBは日常の範囲で、ノートPCでも毎秒数十MBの速度で取り込めます。

ファイルはどこかにアップロードされますか?

いいえ。ブラウザがあなたのディスクから直接読み込み、あなたのマシン上のワーカースレッドで解析し、同じくあなたのマシン上にあるデータベースに書き込みます。アカウントもサーバーもアップロード先もありません。後片付けはタブを閉じるだけです。

なぜExcelは私のCSVを開けないのですか?

たいてい理由は2つです。ワークシートは1,048,576行までしか持てず、それより長い部分は黙って切り捨てられるか、開くこと自体を拒否されます。さらにExcelはファイル全体をメモリに読み込むため、数GBのエクスポートはその上限に届く前にRAMを使い切ります。このページにはどちらの問題もありません。行数の上限はなく、全行が同時に存在することもないからです。

カンマ区切りではないファイルでも大丈夫ですか?

大丈夫です。区切り文字はファイルの先頭から自動判定されます。カンマ・セミコロン・タブ・パイプを順に試し、最初のレコード群で項目数がどれだけ一貫しているかを採点します。頻度ではなく一貫性で決めるので、カンマだらけの文章列があっても、全行を同じ形に区切るセミコロンには勝てません。どれをなぜ選んだかはページに表示されます。

日本語や中国語が文字化けします。直せますか?

直せます。ドロップダウンから正しい文字コードを選ぶと、ファイルはその文字コードで再取り込みされます。文字コードは先頭65,536バイトから自動判定され、UTF-8、UTF-16、Big5、GBK、Shift_JIS、EUC-KR、Windows-1252に対応します。ただし古いCSVには文字コードの表記自体がないため推定が外れることもあり、結果は事実としてではなく「推定」として表示されます。

自分のCSVに対してSQLを実行できますか?

それこそがクエリバーの存在意義です。ファイルは文の中で名前を指定できるテーブルとして取り込まれ、SQLiteが理解するSQLなら何でも実行できます。集計、ウィンドウ関数、CREATE INDEX、サブクエリ。結果は独立した表として表示され、CSVにエクスポートできます。

項目が多すぎる行や少なすぎる行はどうなりますか?

修復ではなく報告されます。項目が足りない行は、足りない列が空のままになります。ヘッダーの列数より項目が多い行は、余った分がCSVとして再エンコードされ、専用の列に保持されます。ファイルの中身は何も消えず、該当した行数もページに表示されます。

ファイルは書き換えられますか?

決して書き換えられません。元のファイルは読み取り専用で開かれ、一度も書き込まれません。ブラウザのストレージにある取り込み済みのコピーは作業用データベースで、取り込みのたびにゼロから作り直され、次に来たときには消去されています。エクスポートも古いファイルには触れず、新しいファイルを書き出します。