CSVテーブル (.csv)
RFC 標準Comma-Separated Values (CSV) は、表形式データのための広く使われているプレーンテキスト形式であり、各行がデータレコードを表し、フィールドは区切り文字で分離されます。
XLSX を CSV に変換
無料のブラウザ内 XLSX から CSV へのコンバーター。お使いのデバイスでファイルを即座に変換します。
CSVをオンラインで圧縮
プライベート - ファイルがデバイスの外に出ることはありません
調査とメタデータ
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してCSVファイルを識別します:
バイトレベルのヘッダーシグネチャ (マジックバイト)
オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してCSVファイルを識別します:
16進数シグネチャ(オフセット0):
固定シグネチャなしASCII表現: テキストバイト。文字コードは異なる場合があります
標準化: RFC 4180 / IETF
技術仕様
| コンテナアーキテクチャ | 表形式のデータ行と列を表す区切り文字付きフラットテキストファイル |
| 圧縮 | Gzip / Deflate により、繰り返しのある表形式レコードで 85% ~ 95% の圧縮を実現 |
| バイトエンディアン | UTF-8 テキストストリーム (Excelで使用されるオプションの UTF-8 BOM EF BB BF を含む) |
| 色空間 | 該当なし |
| チャンネルと構造 | CRLFで区切られた行レコードと、コンマで区切られた列 |
| 最大寸法 | 無制限。ファイルをメモリ全体に読み込まずにギガバイト単位でストリーミング可能 |
| 透過性 | 該当なし |
| ストリーミングとプログレッシブ | すべてのデータパイプラインでサポートされているネイティブな行単位のストリーム処理 |
技術比較表:CSVと競合製品
| 技術属性 | CSV (現在) | Excel (XLSX) | Parquet | JSON |
|---|---|---|---|---|
| ファイル形式 | プレーンテキストのフラットテーブル | ZIP圧縮されたXMLスプレッドシート | バイナリ列指向ストレージ | 階層型テキスト |
| 複数シート | なし(単一のフラットテーブルのみ) | あり(複数のブックとシート) | パーティションベースのストレージ | ネストされた配列とオブジェクト |
| データ型 | 型付けされていない生テキスト | 型付きセル、数式、書式設定 | 厳密なバイナリ列型 | プリミティブ型(文字列、数値、真偽値) |
| ビッグデータ分析 | 低速(すべての行を線形に読み取る必要がある) | ビッグデータには不向き | 超高速(列プルーニングと述語プッシュダウン) | 中程度 |
一般的な破損モードと16進数リカバリガイド
列が右にズレる、または行数が一致しない。
根本原因: 二重引用符で囲まれていない、エスケープされていないコンマが含まれているテキストフィールドがある。
復旧: RFC 4180 では、コンマを含むフィールドを二重引用符で囲むことが義務付けられています(例: "Smith, John")。
Excelでアクセント付き文字が奇妙な記号(é の代わりに é のような文字化け)として表示される。
根本原因: ExcelがレガシーなWindows ANSI/CP1252文字エンコーディングを前提としてUTF-8のCSVを開いたため。
復旧: ファイルの先頭に 3 バイトの UTF-8 バイトオーダーマーク (0xEF 0xBB 0xBF) を付加する。
セキュリティ分析とパーサー攻撃ベクトル
CSVファイルはExcelやGoogleスプレッドシートなどの表計算ソフトウェアで直接開かれるため、ユーザーが数式インジェクション(CSVインジェクション)攻撃にさらされます。
既知の攻撃ベクター
- 数式インジェクション: '=', '+', '-', '@' で始まるセルが、スプレッドシートのマクロや DDE コマンドを実行する(例: '=cmd|' /C calc'!A0')。
- クリック時に機密性の高いセルデータをリモートの攻撃者サーバーに送信する HYPERLINK() 数式によるデータ流出。
防御的ベストプラクティス: ユーザーデータをCSVにエクスポートする際、'='、'+'、'-'、'@' で始まるセルの先頭にシングルクォート(')またはタブを追加することで、Excelでのプレーンテキストとして表示を強制します。
歴史的背景とマイルストーン
主なメリット
- 非常にシンプルな形式で、どのテキストエディタでも読み取れ、すべてのデータベースや表計算ソフトにインポートできます。
- 完全なインメモリDOMを構築することなく、非常に高速な行単位のストリーミング。
- 最小限のオーバーヘッド:冗長なタグ構文やスキーマ定義がない。
技術的な制限とデメリット
- 標準のデータ型がない: 数値、日付、真偽値、テキストはすべて生文字列として保存される。
- 複数のシート、セルの書式設定、数式、メタデータのサポートがない。
- 区切り文字の競合(テキスト内のコンマ、ヨーロッパのロケールでの小数点のコンマ)により、頻繁にパースエラーが発生する。
興味深い技術トリビア
- コンマを小数点として使用する多くのヨーロッパ諸国では、CSVの区切り文字としてコンマの代わりにセミコロン(;)が使用されます。
- Microsoft Excelでは、非ASCIIのアクセント付き文字を正しく表示するために、歴史的にUTF-8 BOM(0xEF 0xBB 0xBF)が必要でした。
- 英国の国民保健サービス(NHS)は、2020年に新型コロナウイルス感染症(COVID-19)の接触者追跡記録約16,000件を紛失したことで有名です。これは、行数の上限が65,536行に制限されている古いExcelのスプレッドシート形式にデータがインポートされたためです。
よくある技術的な質問
RFC 4180 とは何ですか?
RFC 4180 は、CSV に関する公式の IETF 標準です。コンマ、改行、または二重引用符を含むフィールドは二重引用符で囲む必要があり、内部の引用符は二重にすることでエスケープする必要がある("")と規定しています。
なぜCSVファイルをExcelで開くと文字化けするのですか?
古いバージョンの Microsoft Excel では、CSV ファイルを直接開く際に UTF-8 ではなくローカルの Windows コードページ(Windows-1252 など)がデフォルトで使用されます。ファイルの先頭に UTF-8 BOM(Byte Order Mark)を追加することで、Excel に UTF-8 を正しくデコードさせることができます。
CSVインジェクション(数式インジェクション)とは何ですか?
CSVインジェクションは、数式のトリガー('=', '+', '-', '@')を含む信頼されていないユーザー入力がスプレッドシートファイルにエクスポートされたときに発生します。Excelなどのソフトウェアで開くと、スプレッドシートが自動的に数式や動的データ交換(DDE)コマンドを実行し、システムコマンドを実行したりデータを流出させたりする可能性があります。
関連するCSV変換ペア
Excel シートを CSV テーブルに変換することで、生の表データを汎用的なテキスト形式として抽出し、ソフトウェア間の互換性を最大限に高めます。
シンプルなテキストベースの CSV ファイルを高機能な XLSX スプレッドシートに変換することで、高度なデータのスタイリング、数式、複数シートの利用が可能になります。
フラットなテキストファイルを構造化されたリレーショナルデータベースに変換することで、高速なクエリの実行と複雑なデータリレーションの管理が可能になります。
リレーショナルデータベースのバックアップスクリプトをフラットな表形式のスプレッドシートに変換し、簡単なデータ分析やレポート作成を可能にします。
階層構造を持つHDF5データセットをフラットなテレメトリCSVファイルに変換することで、複雑な多次元の科学記録をスプレッドシート解析用のシンプルな行と列に変換できます。
多次元のNetCDF科学グリッドをフラットなテレメトリCSVファイルに変換することで、複雑な気候・海洋データを基本的な表計算ソフトで読み取れるようにします。
vCard ファイルを連絡先 CSV に変換し、階層的な連絡先カードをフラットなスプレッドシートの行に変換してデータベースへのインポートを容易にします。