Comma-Separated Values
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/07/20 00:06 UTC 版)
背景
コンピュータ内部において、データベース内のテーブルや表計算ソフトの表の内容は、それぞれのソフトウェアが処理可能な独自のファイルフォーマットで保存されていることがあり、そのような場合は別のソフトウェアへデータを移そうにも基本的には互換性はないため読み込むことはできない。
カンマ区切りテキストは、テキスト形式で保存されるので、テキストエディタでも閲覧や編集ができる。さらに、使用するソフトウェアが、カンマ区切りテキストの出力 (エクスポート) と、読み込みから表への生成 (インポート) に対応していれば、別製品のデータベースソフトや表計算ソフトからのデータ交換が可能となる。
しかし、「テキスト形式」や「日付形式」といった各項目に設定している属性は出力されないので、インポートする側のソフトウエアがインポートする際に設定しなくてはいけない。
Microsoft Excelに代表されるパソコンの表計算ソフトが流行して以降、非常によく利用されるようになった。大型コンピュータとのデータのやりとりでは固定長データフォーマットがよく利用される。現在では、XMLを使おうという動きもあるが、XMLの仕様は膨大であり、読み書き処理のオーバーヘッドが大きく、主流にはなっていない。
問題点と回避策
フィールドにコンマやダブルクォートが含まれている場合、エスケープされている場合でも、ソフトウェアによって解釈が異なり、区切り方が変わることがある。その結果、データが破壊されることや、データ修正の手間が生じることがある。
フィールドにコンマやダブルクォートが含まれていることは頻繁にありうるが、フィールドにタブのような制御文字が含まれていることは少ない。従って、区切り文字にコンマを使うCSV形式の代わりに、区切り文字にタブを使うTSV形式を使うことで問題を避けられることがある。
XMLのようにエンコード方式(文字セット)を指定・宣言する仕様が規定されていないため、エンコードは決め打ちまたはバイト順マークなどを利用した推定に頼ることになる。
実装
この節は検証可能な参考文献や出典が全く示されていないか、不十分です。(2020年4月) |
CSVの実装には、各方言独自の拡張や制約がある。ただし、歴史的に見れば、これらの実装のほうがRFC 4180以前から存在している。
- レコード区切り文字列
- CR LF を区切り文字列として扱わない処理系がある。
- フィールド区切り文字
- 全角コンマ「,」を区切りとみなす処理系がある。
- ダブルクォート文字の表現
- ダブルクォート文字を表現する方法として「ダブルクォートを重ねる」処理系と、「バックスラッシュを前につける」処理系が存在する。
- ダブルクォート文字の有無
- 多くのソフトウェアは、必要なときのみフィールドをダブルクォートで囲む。ただし、そうでないファイルも読み取れる。
- フィールド数
- 読み取りファイルのフィールド数が一定でない場合、ほとんどのソフトウェアは、空文字列(長さ0の文字列)からなるフィールドを適宜追加して数をそろえる。
- 空行、フィールド数が0個のレコード
- 空行を全てのフィールドが空文字列であるとして処理する処理系と、空行を無視する処理系がある。
- 注釈
- 特定の書式の文字列を注釈行として扱う処理系がある。
固有名詞の分類
- Comma-Separated Valuesのページへのリンク