「Comma-Separated Values」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Mackun (会話 | 投稿記録)
編集の要約なし
Norenz (会話 | 投稿記録)
編集の要約なし
37行目: 37行目:
データ交換用の[[デファクトスタンダード]]として、古くから多くの[[表計算ソフト]]や[[データベース]]ソフトで使われているが、細部の[[実装]]はソフトによって異なる。それらを追認する形で、2005年10月、RFC 4180でInformational([[Internet Engineering Steering Group|IESG]]の外部で決定された有用な情報の提供)として仕様が成文化された。
データ交換用の[[デファクトスタンダード]]として、古くから多くの[[表計算ソフト]]や[[データベース]]ソフトで使われているが、細部の[[実装]]はソフトによって異なる。それらを追認する形で、2005年10月、RFC 4180でInformational([[Internet Engineering Steering Group|IESG]]の外部で決定された有用な情報の提供)として仕様が成文化された。


類似したフォーマットとして、'''タブ区切り'''された '''Tab-Separated Values''' ('''TSV''')や、'''半角スペース区切り'''された '''Space-Separated Values''' ('''SSV''') などがある。
CSVの変種に[[管理工学研究所]]が画定した'''K3'''フォーマットがある。拡張子は.K3。
CSVの変種に[[管理工学研究所]]が画定した'''K3'''フォーマットがある。拡張子は.K3。



2010年8月25日 (水) 15:28時点における版

Comma-Separated Values
ファイル:日本国,東京,127767944
拡張子.csv
MIMEタイプtext/csv
タイプコード'TEXT'
国際標準RFC 4180
K3
ファイル:"日本国","東京",127767944
拡張子.K3
MIMEタイプtext/csv
開発者管理工学研究所
派生元CSV

Comma-Separated Values (CSV) は、いくつかのフィールド(項目)をコンマ「,」で区切ったテキストデータおよびテキストファイル拡張子は.csv、MIMEタイプはtext/csv。

「Comma-Separated Variables」とも言う。広く普及した訳語はないが、「カンマ区切り」などとも呼ばれる。Microsoft Excelでは「CSV (カンマ区切り)」としている。

データ交換用のデファクトスタンダードとして、古くから多くの表計算ソフトデータベースソフトで使われているが、細部の実装はソフトによって異なる。それらを追認する形で、2005年10月、RFC 4180でInformational(IESGの外部で決定された有用な情報の提供)として仕様が成文化された。

類似したフォーマットとして、タブ区切りされた Tab-Separated Values (TSV)や、半角スペース区切りされた Space-Separated Values (SSV) などがある。 CSVの変種に管理工学研究所が画定したK3フォーマットがある。拡張子は.K3。

仕様

RFC 4180に述べられた仕様について述べる。


ファイルは1つ以上のレコードからなる。レコードは改行(CRLF、U+000D U+000A)で区切られる。最後のレコードの後には改行はあってもなくてもいい。

レコードは1つ以上の同じ個数のフィールドからなる。フィールドはコンマ「,」(U+002C) で区切られる。最後のフィールドの後にはコンマは付けない。

(以下の例では、読みやすさのためにCRLFの前にスペースを書くが、実際はないものと思って読んで欲しい)

日本国,東京,127767944 CRLF
アメリカ合衆国,ワシントン,300007997 CRLF
…

なお、最後のフィールドの後にはコンマはないので、もしレコードがコンマで終わっているように見えれば、実際はその後にヌル文字列(長さ0の文字列)からなるフィールドがある。次のレコードは、「日本国」「東京」「」の3つのフィールドからなる。

日本国,東京, CRLF

ファイルの先頭には、オプションとして、通常のレコードと同一の書式の「ヘッダ行」があってもいい。ヘッダ行は、他のレコードと同じ個数のフィールドを持ち、フィールドの名称が書かれている。

国,首都,人口(2006) CRLF
日本国,東京,127767944 CRLF
アメリカ合衆国,ワシントン,300007997 CRLF
…

フィールドは、ダブルクォート「"」(U+0022) で囲んでも囲まなくてもよい。次の3つのレコードは、(文字列としては)同じ内容である。(ただし、RFCはフィールドの解釈までは規定していない。一部のソフトはダブルクォートで囲まれているかどうかで解釈を変える)

日本国,東京,127767944 CRLF
"日本国","東京","127767944" CRLF
"日本国","東京",127767944 CRLF

フィールドがコンマ、ダブルクォート、改行を含む場合は、かならずダブルクォートで囲む。また、フィールドに含まれるダブルクォートは2つ並べてエスケープする。次のレコードの内容は、「日本[改行]国」「"東京"」「127,767,944」である。なお、ここでいう「コンマ」「ダブルクォート」はU+002CとU+0022のことで、他のもの(たとえば全角コンマ)は関係ない。ただし、「改行」にはCR (U+000D) とLF (U+000A) を含む。

"日本 CRLF
国","""東京""","127,767,944" CRLF

背景

コンピュータ内部において、データベース内のテーブル表計算ソフトの表の内容は、それぞれのソフトウェアが処理可能な独自のファイルフォーマットで保存されており、別のソフトウェアへデータを移そうにも基本的には互換性はない為に読み込む事はできない。

カンマ区切りテキストは、テキスト形式で保存されるので、テキストエディタでも閲覧や編集ができる。さらに、使用するソフトウェアが、カンマ区切りテキストの出力 (エクスポート) と、読み込みから表への生成 (インポート) に対応していれば、別製品のデータベースソフトや表計算ソフトからのデータ交換が可能となる。

しかし、「テキスト形式」や「日付形式」といった各項目に設定している属性は出力されないので、インポートする側のソフトウエアがインポートする際に設定しなくてはいけない。

パソコンの表計算ソフトが流行して以降、非常によく利用されるようになった。大型コンピュータとのデータのやりとりでは固定長データフォーマットがよく利用される。現在では、XMLを使おうという動きもあるが、主流にはなっていない。

実装

CSVの実装には、各社独自の拡張や制約がある。ただし、歴史的に見れば、これらの実装のほうがRFC 4180以前から存在している。

  • 多くのソフトは、必要なときのみフィールドをダブルクォートで囲む。ただし、そうでないファイルも読み取れる。
  • 管理工学研究所 (Kanri Kogaku Kenkyusho, K3) が画定しなどで使われるK3フォーマットは、文字列型は必ずダブルクォートで囲み、ダブルクォートがなければ数値型となる(たとえば、「0011」は数値「11」となる)。このため、通常のCSVをK3として読む、あるいはその逆をすると、型情報が失われることがある。また、K3の拡張子.K3をCSVファイルと認識しないソフトがあるので、そのときは拡張子を変えなければならない。ただし、桐8以降は通常のCSVを読み書きできる。
  • Microsoft Excelは、デフォルトでは、数値型に解釈できるフィールドは数値型とみなす。オプションで、全てを文字列型とみなすこともできる。ダブルクォートで囲まれているかどうかで解釈を変えることはない。また、拡張子をテキストファイルの「.TXT」に変更した上でインポートする場合は列ごとに型を指定できる。
  • Microsoft Excelは、フィールドをダブルクォートで囲んで先頭に等号「=」を付ける(例「…,="2+3",…」)と、計算式型とみなす。Microsoft ExcelにはCSVの特定のフィールドを文字列型と指定する機能がないので、計算式型で文字列型の代用にすることがある。ただし、この書式はRFCには適合していない。
  • 読み取りファイルのフィールド数が一定でない場合、ほとんどのソフトは、ヌル文字列(長さ0の文字列)からなるフィールドを適宜追加して数をそろえる。
  • 上に従えば、空行は、全てのフィールドがヌル文字列からなるレコードとなる (Microsoft Excelなど)。ただし、空行を完全に無視するソフトもある。
  • 特定の書式のコメント行を無視するソフトがある。一般的にはコメント行はナンバ「#」で始まる。
  • 改行コードがCRLFと異なる処理系では、レコードの区切りはその処理系での改行コードであることも多い。
  • VBAは、全角コンマ「,」を区切りとみなす。そのため、全角コンマを含むフィールドはダブルクォートで囲まなければならない。

Character-Separated Values

コンマの代わりに別の文字を区切りに使ったフォーマットもあり、まとめてCharacter-Separated Valuesと呼ぶ。

代表的なものに以下のようなものがある。頭字語で呼ぶときは、一意に決まらないことがある(たとえば、SSVはSemicolon-Separated Valuesの略かもしれない)ので注意が必要である。

  • タブ - Tab-Separated Values (TSV) - MIME typeはtext/tab-separated-values
    • このタブ区切りのフォーマットが使用されることも多い。
  • スペース - Space-Separated Values (SSV)

関連項目

外部リンク