CSV 形式
Write : 2006/02/07
CSV (Comma Separated Value)
CSV とは
一般的に CSV とは、データの保存形式を示す言葉です。CSV はテキスト形式でデータを記録しますが、表形式のデータを扱うのに適しています。まず、表の1レコードが CSV の1行に対応します。そしてレコード内のデータをカンマ(,)で区切った内容が CSV の1行の内容になります。
CSV の利点
CSV の利点はテキスト形式で表形式のデータが扱えるという点です。表データを扱うソフトの代表として Microsoft社 の Excel がありますが、これはバイナリ形式でデータを扱っているため Excel または その互換ソフトが無いとデータを見ることさえできません。しかし CSV であればテキスト形式のため、メモ帳といったテキストエディタさえあれば編集もできますし、Excel や CSV編集ソフト を使用すればより簡単にデータを編集することができます。
CSV の欠点
CSV の欠点としては、「カンマ区切りである」ということです。カンマでデータを区切る以上、データにカンマが入ってはいけません。データ中のカンマがデータの区切りとして処理されてしまうからです。実際の CSV では、カンマをエスケープしたり、データ部分をダブルコーテーション(")で囲ったり、タブなど別の区切り文字でデータを区切ったりしてこの問題を回避しています。
カンマで区切れないデータの扱い
カンマのエスケープ
カンマのエスケープと言うのは、データ中のカンマ「,」を内部的に「\,」などで置き換える方法です。この方法を利用すれば、CSV でカンマを持つデータを扱えます。
もし CSV 中に「\,」が現れたらそれはデータの「,」だとして処理します。しかしこの方法では、「\」で終わるデータは次の区切り文字とあわせて「\,」となってしまうため扱えません。
データ部分をダブルコーテーションで囲む
データ部分をダブルコーテーション(")で囲めば、囲まれたデータ部分に含まれる「,」はデータとして処理できます。しかし「,」は心配なくてもデータ部分にダブルコーテーションがある場合はそれもエスケープしなければいけないといった話がでてきてしまいます。
タブでデータを区切る
基本的にはカンマ(,)で区切る場合と何も変わりません。ただカンマよりもデータ中に含まれる可能性の少ない文字を使用してデータを区切ろうとする方法です。
データのエンコード
そもそもデータとして「,」があっても「,」が含まれないデータとなるよう符号化して扱う方法です。データの保存という目的では問題ありませんが、テキストエディタで簡単に編集できなくなってしまいます。
例えば Base64 でエンコードした場合、もともとテキスト形式のため大きくなりがちなデータサイズを Base64エンコード によってさらに大きくしてしまう点も気になります。