CSV ファイル形式とは?
.csv は、さまざまな種類のデータを文字で区切られたテキストセットとして保存するファイル形式であり、最も一般的にはカンマが使用されるため、Comma-Separated Values(カンマ区切り値)という名前が付けられています。この形式は RFC 4180 (2005) で文書化されており、最小限ながら広く採用されている標準です。データレコードは改行文字で区切られ、個々のフィールド値は通常、二重引用符(ダブルクォート)で囲まれます。 フィールド内にリテラルの二重引用符を含める場合は、"" のように2回続けて記述します。
.csv ファイルの最初の行には、慣習的に列名(ヘッダー行)が含まれますが、CSV の仕様ではその構造は強制されていません。レコードのフィールドは以下によって区切られる場合があります:
- カンマ
- セミコロン
- タブ(.TSV を参照)
- その他の文字 - ドキュメント全体で一貫して使用されるもの
.csv ファイルは、あらゆるテキストエディタで開くことができる、定義済みのプラットフォームに依存しない形式でデータを保存、インポート、およびエクスポートするために使用されます。区切り文字の選択に制限がないため、変換中に問題が発生することがあります。そのため、Microsoft Excel や LibreOffice Calc などのスプレッドシートアプリケーションと同様に、データインポートウィザードでは使用する区切り文字を設定するオプションを提供する必要があります。
.csv にはファイルシグネチャ(magic bytes)がなく、内容ではなくその構造によって識別されます。ファイルはオプションで UTF-8 バイトオーダーマーク(EF BB BF)から始まる場合があり、Excel はエンコーディングを通知するためにこれを自動的に書き込みます。ほとんどのプログラミング言語は、.csv ファイルを確実にインポートおよび管理するための専用ライブラリを提供しており、今日使用されている最も普遍的なデータ交換形式の1つとなっています。
セキュリティと安全性
リスク: MEDIUMCSV はプレーンテキストであり、それ自体でコードを実行することはできませんが、CSV インジェクション(数式インジェクション)という実質的なリスクを伴います。セルが «=», «+», «-», «@» で始まる場合、スプレッドシートは開く際にそれを数式として実行する可能性があります。攻撃者はエクスポートされた CSV でこれを悪用し、コマンドを実行したりデータを漏洩させたりします。最新の Excel や LibreOffice は、このような数式を実行する前に警告を表示します。信頼できないソースからのファイルではこれらを有効にしないでください。日常的な «リスク» はマルウェアではなくデータの破損です。間違ったエンコーディングや区切り文字によって、数値、日付、および先頭のゼロ(郵便番号や電話番号の先頭の 0 が消えるなど)が密かに損なわれることがあります。
形式の詳細
概要CSV ファイルを開くプログラム
技術的詳細
詳細仕様| MIME タイプ | text/csv |
| ファイル構造 | プレーンテキスト。行は改行で区切られ、フィールドは選択された区切り文字で区切られる |
| デフォルトの区切り文字 | カンマ (`,`)。セミコロンやタブも広く使われているバリエーション |
| 改行コード (RFC 4180) | CRLF (仕様上は `\r\n`)。実務上は LF のみ (`\n`) も広く受け入れられている |
| フィールド引用文字 | 二重引用符 (`"`)。フィールド内のリテラルな引用符をエスケープするには二重 (`""`) にする |
| ヘッダー行 | 慣習的に列名をリストするオプションの最初の行。RFC 4180 ではヘッダー構造は未定義 |
| ファイルシグネチャ (magic bytes) | なし。構造によって識別される。ファイルの先頭にオプションの UTF-8 BOM (`EF BB BF`) が現れることがある |
| 複数行フィールドのサポート | フィールドの内容が二重引用符で囲まれている場合にサポートされる |
| データモデル | 単一のフラットなテーブルのみ。ネスト、リレーション、または列のデータ型は形式にエンコードされない |
| 文字エンコーディング | 書き手と読み手の間で合意された任意のエンコーディング。UTF-8 と Windows-1252 が最も一般的 |
| 組み込み圧縮 | なし。ファイルは通常 `.gz` または [ZIP](/format/zip) としてアーカイブされる |
| ストリーミングへの適合性 | 高い - ファイル全体をメモリに読み込むことなく、行ごとに処理可能 |
| バイナリデータのサポート | ネイティブではサポートされない。バイナリコンテンツはテキストとして Base64 エンコードする必要がある |
| アプリケーションの行制限 | 形式レベルの制限はなし。Microsoft Excel はシートのインポートを 1,048,576 行に制限している |
| リリース日 | 1970s (early use); RFC 4180 published 2005 |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.rfc-editor.org |
CSV の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。CSV ファイルについて最初の質問をしてみましょう。