本文へ移動
Develop Tools
← 使い方ガイドへ戻る

大容量CSV・TSVを確認する方法|Excelを開かず行数・データを閲覧

大容量CSVはParseとTable描画を分けて考えます。現行ViewerはWorkerとPaginationを使いますが、StreamingやVirtualizationではありません。

大容量CSVをWeb Workerで解析しPaginationで表へ表示する流れ
大容量CSVをWeb Workerで解析しPaginationで表へ表示する流れ

元のCSV・TSVをブラウザで確認する

FileはDevelopToolsのServerへ送信せず、選択したEncodingとDelimiterでBrowser内解析します。元Fileを上書きせずに表・行数・列数・検索結果を確認できます。

大きなCSVを表形式で確認する

結論:元ファイル・Decode・Parse・表示を分けて確認する

まず1MB、10MBのCopyでEncoding・Delimiterを確定し、必要に応じて元Fileへ進みます。現行Viewerは全体Decode後に最大100,000行・200列をWorker解析し、25~200行ずつ描画します。

50MB・100MBの可否は端末Memory、列数、長いField、Browserに依存します。対応を保証せず、元FileのBackupと小さいSampleを用意してください。

最小サンプルで症状を再現する

id,status,message
1,OK,short text
... 100,000 data rows

行数だけでなく列数、100KB級の長いField、Quoted NewlineがMemoryと解析時間を増やします。

大容量を段階的に実測する

Test確認対象切替判断
1MB / 10,000行Encoding・Delimiter・Quote設定を確定
10MB / 100,000行解析時間・Memory・検索端末で継続可否を判断
50MB / 100MBBrowser応答・Reload・制限不安定ならCLIやDBへ切替
500,000行 / 1,000列現行上限超過完全表示目的には使わない

Paginationは表示DOMを減らしますが、解析結果自体はMemoryへ保持します。WorkerもStreamingではないため、巨大File向けの万能対策ではありません。

元ファイルを変換せずに開く

  • 調査前のCSV・TSVを上書きせず、同じFileを表計算SoftwareとViewerで比較します。
  • File選択またはDrag & DropならByte列をUTF-8・Shift_JISでDecodeできます。貼り付け入力はすでにBrowserの文字列になっているため、Encoding切替の比較には元Fileを使います。
  • 先頭行がHeaderなら「先頭行を見出しとして使用」をONにし、HeaderなしDataならOFFにします。
  • 読み込み後にData行数、列数、推定または選択した区切り文字、警告を確認します。

ViewerはFieldを文字列のまま保持します。00123、12345678901234567890、1-2-3、true、=SUM(A1:A10)をNumber・Date・Boolean・Formulaへ変換しません。

区切り文字を自動推定と手動指定で比較する

形式・候補実際の境界1列や列ずれが起きたときの確認
CSVのCommon FormatComma(,)Quoted Field内のCommaを列境界にしない
TSVTAB(U+0009)Spaceや文字列「\t」と区別する
Semicolon区切りSemicolon(;)地域・出力SoftwareによるDialectを確認する
Pipe区切りPipe(|)値の中にPipeがある場合のQuote規則も確認する

自動推定は先頭50,000文字から候補をParseし、複数行で列数が安定する候補を選びます。文章Fieldに特定記号が多いFileでは誤る可能性があるため、結果が不自然ならComma、TAB、Semicolon、Pipeを1つずつ手動選択します。拡張子やMIME Typeだけで区切り文字を断定しません。

UTF-8・Shift_JIS・BOMを分けて確認する

文字化けは同じByte列を異なるEncodingでDecodeしたときに起きます。Fileを選び、まずUTF-8、読めなければShift_JISへ切り替えて再読込します。現在のViewerはEncodingを自動判定しないため、選択結果と日本語・記号・機種依存文字を目視確認します。

確認対象Viewerでの扱い注意点
UTF-8TextDecoder("utf-8")でDecodeEmojiや日本語の代表行を確認する
Shift_JISTextDecoder("shift_jis")でDecodeCP932固有文字はBrowser実装と元Fileを実測する
UTF-8 BOM先頭U+FEFFを除去しHeaderへ残さないBOM有無そのものを画面へ診断表示はしない
LF・CRLFどちらもRecord区切りとしてParse混在状態や採用Codeの診断表示はしない

BOMを付ければすべての環境で必ず直るわけではありません。利用先のImport方法とEncoding要件を確認し、元FileのCopyで試してください。

列数・Double Quote・セル内改行を一緒に確認する

id,name,memo
1,Alice,"Tokyo, Japan"
2,Bob,"Line 1
Line 2"
3,Carol,"He said ""Hello"""

CSVをline.split(",")やtext.split("\n")だけで処理すると、Quoted CommaやQuoted Newlineを列・Record境界と誤認します。現行ViewerはQuoteの内外を1文字ずつ追跡し、Field内の""を1つの"として戻します。空Fieldと末尾Delimiterも列位置として保持し、Whitespaceを勝手にTrimしません。

  • 列数Warningは最大列数と異なるData行の件数です。現在は該当Row番号までは表示しません。
  • 閉じていないQuoteはWarningになります。表示結果だけで修復せず、元FileのQuoteを確認します。
  • 空Headerは「列 n」、重複Headerは「name (2)」のような表示名になりますが、元Dataを書き換えたわけではありません。
  • 空行は1列の空Fieldを持つRecordとして残り得ます。途中の空Field、空Record、欠損値の意味は入力元Systemの仕様で判断します。

Excel等による自動変換と元CSVを切り分ける

元Field表計算Softwareで起こり得る表示Viewerで確認する値
0012312300123
12345678901234567890指数表記または15桁以降の精度変化すべての文字
1-2-3 / JAN1日付らしい値元の文字列
1e10指数表記の数値1e10
=SUM(A1:A10)Formula実行しないText

Viewerで元文字列が残っていれば、変化はCSV保存時ではなくImport・表示段階で起きた可能性があります。すでに元CSV自体が変換後の値ならViewerから元のZeroや桁を復元することはできません。Excelへ取り込む場合は、MicrosoftのText/CSV ImportやAutomatic Data Conversion設定も確認します。

現在のCSV・TSVファイル閲覧ツールで確認できること

分類対応内容確認しておく境界
入力CSV・TSVファイルの選択、Drag & Drop、Text貼り付け複数Fileの一括読込、URL取得、履歴復元は行わない
文字コードUTF-8またはShift_JISを手動選択し、先頭のUTF-8 BOMを除去Encoding自動判定、BOM・改行Codeの診断表示は未対応
区切り文字Comma、TAB、Semicolon、Pipeを自動推定または手動選択任意のCustom区切り文字には未対応。自動推定は完全ではない
CSV解析Double Quote、Quoted Comma、Escaped Quote、Quoted Newline、空Fieldを独自Parserで処理RFC 4180の厳密なValidatorではない
見出し先頭行をHeaderとして使う設定をON・OFF可能空Headerは列番号で補完し、重複Headerは連番で画面上の識別名を付ける
行番号、全列検索、列Header Sort、25~200行のPagination、列幅・行高調整列Filter、Raw専用View、Virtual Scroll、CSV再出力は未対応
診断Data行数、表示列数、区切り文字、閉じていないQuote、行ごとの列数不一致を表示不一致Row番号・BOM・Encoding・LF/CRLFの個別表示は未対応
大容量解析はWeb Workerで行い、最大100,000 Data行・200列を保持してPagination表示Streaming・Chunk Parse・Virtualizationではなく、超過分は表示対象外になる

画面にない機能を前提に原因を断定しません。特に文字コードと区切り文字の自動判定、Raw View、行単位の詳細診断、任意サイズの大容量対応は、現在のツールにはありません。

ブラウザ処理・大容量・Privacyの実装境界

FileのArrayBuffer、Decode後Text、解析Row、検索KeywordはBrowser内で処理し、CSV本文・File名・Header名・Cell値をfetchやsendBeaconで送る処理はありません。読込内容をlocalStorageへ保存せず、Reload後は復元しません。ただしSite共通の広告・Analytics通信と、利用者が入力したCSV本文の送信は別の話です。機密Dataでは組織のPolicyとBrowser Extensionも確認してください。

解析はWeb Workerへ分離していますが、File全体をMemoryへ読み込む方式です。表示はPaginationでDOM数を抑えますがVirtualizationやStreaming Parseではありません。100,000 Data行・200列で打ち切るため、「100MBを必ず開ける」「500,000行を完全表示できる」とは案内できません。1MB、10MBなど小さい段階から端末Memoryと応答を実測してください。

Formulaに見える文字列や<script>はCellのtextContentとして表示し、式・HTML・JavaScriptとして実行しません。表計算SoftwareへCopy・Importした後の挙動は別途確認してください。

解決しない場合の切り分け

  • 元FileをText Editorでも開き、Comma・TAB・Quote・改行が実際にどこへ入っているか確認します。
  • 数行だけのCopyを作り、同じEncoding・Delimiter・Header設定で再現するか確認します。
  • 100,000行または200列を超える場合は、表示件数制限と元Dataの不一致を混同しないようにします。
  • 2つのFileのRaw Text差分はText Diff、Fileが完全一致するかだけならHash生成・照合を使います。CSV列単位のSemantic Diffではありません。
  • CSVを別形式へ変換した後にJSON階層を調べる場合はJSON Tree Viewerを使います。現行サイトにはCSV→JSON専用変換Toolはありません。

仕様とSoftwareの一次資料を確認する

RFC 4180はCSVのCommon FormatをまとめたInformational RFCであり、現実のすべてのCSVが同じDialectという意味ではありません。TSVはIANA登録、BrowserのFile読込・DecodeはMDN、Excel固有の自動変換はMicrosoft Supportを優先して確認します。

まとめ

  • 1MBから段階的に端末で実測する
  • WorkerはUI停止を軽減するがMemory使用量はなくならない
  • 最大100,000 Data行・200列の表示制限を理解する

元Fileを残したまま、Encoding、Delimiter、Header、Quote、改行、列数、表計算Softwareの自動変換を順番に切り分けると、CSV・TSVの問題を推測だけで修正せずに済みます。

具体例:大容量CSV・TSVを確認する方法を再現する

元Fileを上書きせず、まず数行のCopyで「id,status,message / 1,OK,short text / ... 100,000 data rows」を確認します。

行数だけでなく列数、100KB級の長いField、Quoted NewlineがMemoryと解析時間を増やします。 設定が決まったら同じEncoding・Delimiter・Header条件で元Fileを開き、問題の前後も比較します。

  1. 元CSV・TSVのCopyをFile選択またはDrag & Dropで読み込みます。
  2. UTF-8またはShift_JISを選び、日本語と記号が読めるか確認します。
  3. Delimiterを自動推定から手動指定へ切り替え、列数が揃うか比較します。
  4. Header、Quote、空Field、セル内改行、Warningを確認します。
  5. 元Fileと表計算Softwareの表示を比較し、原因を確定してから修正します。

調査中は元Fileを上書きしません。Viewerの表示だけでDataを修復したと判断せず、入力元・利用先の仕様とも照合してください。

よくある質問

CSV・TSVの内容はサーバーへ送信されますか?
CSV本文、File名、Header、Cell値、検索KeywordはViewerのBrowser内で処理し、DevelopToolsのServerへ送信・保存しません。Site共通の広告・Analytics通信やBrowser Extensionは別途確認してください。
文字コードや区切り文字を自動で完全判定できますか?
できません。文字コードはUTF-8またはShift_JISを手動選択し、区切り文字の自動推定もComma・TAB・Semicolon・Pipeから列数の安定性で選ぶHeuristicです。結果を手動で確認してください。
500,000行や100MBのCSVもすべて表示できますか?
保証できません。現行ViewerはFile全体をMemoryへ読み込み、最大100,000 Data行・200列を表示します。Streaming・Virtualizationではないため、小さいCopyから段階的に試してください。