CSVファイルって何? 便利なようで取扱いが難しいことも

表計算やデータベースソフトにはデータをCSV形式で保存する機能があります。しかしCSVが何か知らないために使ったことがない方も多いようなので、今回はCSVファイルについての基礎知識と注意点についてお話しします。

スポンサーリンク

CSVはアプリケーション間でデータをやり取りするファイル

CSVとは「Comma Separated Values」の略で、データ(値)をカンマ記号(,)で区切って書いたファイルのことです。

表計算ソフトは1つの値を1つのセルに入れますが、CSVはセルの代わりにカンマを使います。例えば住所録なら、

財務省,100-8940,東京都千代田区霞が関3-1-1,03-3581-4111

という書き方になります。

区切り文字にTAB記号を使うTSVファイルなどもありますが、一般的にはこれらをまとめてCSVファイルと呼びます。

CSVファイルの用途は、異なるアプリケーションでデータを共有することです。

表計算ソフトのデータをデータベースソフトに移したり、メールソフトを乗り換えるときなどに重宝します。

CSVファイルはシンプルなテキストファイルなので、メモ帳などのエディタでも作ることができます。例として「省庁住所録.csv」というファイルを作ってみました。

— 省庁住所録.csv —

組織,郵便番号,住所,電話番号
財務省,100-8940,東京都千代田区霞が関3-1-1,03-3581-4111
文部科学省,100-8959,東京都千代田区霞が関三丁目2番2号,03-5253-4111
法務省,100-8977,東京都千代田区霞が関1-1-1,03-3580-4111
外務省,100-8919,東京都千代田区霞が関2-2-1,03-3580-3311
厚生労働省,100-8916,東京都千代田区霞が関1-2-2,03-5253-1111
農林水産省,100-8950,東京都千代田区霞が関1-2-1,03-3502-8111
経済産業省,100-8901,東京都千代田区霞が関1-3-1,03-3501-1511
国土交通省,100-8918,東京都千代田区霞が関2-1-3,03-5253-8111
環境省,100-8975,東京都千代田区霞が関1-2-2,03-3581-3351
防衛省,162-8801,東京都新宿区市谷本村町5-1,03-5366-3111

————————-

この「省庁住所録.csv」を表計算ソフトで開くと下図のようになります。

こうして開いたCSVファイルはそのアプリケーションの形式(エクセルなら「省庁住所録.xlsx」)で保存すれば、次回からはその表計算ソフトのファイルとして開くことができます。

CSVファイルの一応『標準的な』書き方

実は、CSVファイルの書き方についての厳密な決まりはありません。

一応「こうしましょう」という「提言」のようなものはあるのですが、実際にはアプリケーションごとに扱い方は様々です。

とは言っても、「提言」に書かれている標準らしき書き方を知っておく必要はあります。

データはカンマで区切る

すでに述べているとおり、各データはカンマ記号(,)で区切ります。

【例】財務省,100-8940,東京都千代田区霞が関3-1-1,03-3581-4111

行末にはカンマを付けず、改行記号を付ける

CSVファイルのデータは1行が1レコード(1件)となり、行末の改行記号で区切られるので、行末にはカンマを付けずに改行します。

【誤】財務省,100-8940,東京都千代田区霞が関3-1-1,03-3581-4111,

【正】財務省,100-8940,東京都千代田区霞が関3-1-1,03-3581-4111
※↓は改行記号を表しています。

改行記号はOSによって異なりますが、「提言」で推奨されているのはWindowsで使われているCR+LF形式です。つまり、Windowsではふつうに改行すればOKです。

データの個数は全ての行で同じにする

CSVファイルは1つのカンマが表計算ソフトの1セルと同じ意味になるので、全てのレコードでカンマの数を同じにする必要があります。

【正】財務省,100-8940,東京都千代田区霞が関3-1-1,03-3581-4111
【誤】文部科学省,東京都千代田区霞が関三丁目2番2号,03-5253-4111

2行目は郵便番号が抜けているため、このまま表計算ソフトで読み込むと住所が郵便番号の列にずれてしまいます。もし一部のデータが不明な場合は、カンマ記号だけを打って空白のデータということにしておきます。

【例】文部科学省,,東京都千代田区霞が関三丁目2番2号,03-5253-4111

見出し行を付けることができる

1行目は見出し行にすることもできます。

組織,郵便番号,住所,電話番号
財務省,100-8940,東京都千代田区霞が関3-1-1,03-3581-4111
文部科学省,100-8959,東京都千代田区霞が関三丁目2番2号,03-5253-4111

見出し行は必須ではなく、あってもなくてもかまいません。

ややこしいダブルクォーテーションの扱い

「提言」ではダブルクォーテーションは付けても付けなくてもいいとしていますが、以下のような場合はダブルクォーテーションが必要になります。

■ 数字を3桁ごとにカンマで区切っている場合は、123,456,789, のようにダブルクォーテーションで囲む必要があります。この場合、その行に含まれる全てのデータにもダブルクォーテーションを付けなければなりません。

【誤】HB001,ハンドバッグ,19,800

【正】HB001,ハンドバッグ,19,800

■ データの中に改行が含まれている場合も、ダブルクォーテーションで囲みます。

“あああ”,”いい↓
い”,”ううう”

■ すでにダブルクォーテーションで囲まれた値がある場合は、その前後にダブルクォーテーションを付けてエスケープします。

“あああ”,”いい“い”,”ううう”

上の例はちょっとわかりにくいでしょうが、「いい”い」という変な値が入っている場合です。

これらを表計算ソフトで読み込むと下図のようになります。

 

これらの他にも、データを読み込むアプリケーションによっては、全ての値をダブルクォーテーションで区切ることを要求するしてくる場合もあります。まったく面倒ですね。

0から始まるデータの扱い方

面倒なのはダブルクォーテーションだけでありません。数字の取り扱いにも注意が必要です。

よくあるトラブルが、0から始まる数字です。

例えば各レコードに001、002、003…と連番を付けて管理しているCSVファイルをアプリケーションで読み込むと、001、002が1、2になってしまうことがあります。

— ポテチ.csv —

商品番号,商品名,価格
001,ポテトチップス コンソメ味,120
002,ポテトチップス うす塩味,120
003,ポテトチップス じゃがバター味,120
004,ポテトチップス トムヤムクン味,120
005,ポテトチップス ジンギスカン味,120

——————

これを表計算ソフトで読み込むと、こうなってしまいます。

これはアプリケーションが001や002を数値として判断したためです。これを防ぐにはA001 A002 A003のように文字から始まる番号にしておきます。

しかし、すでに001や002で連番にしている場合は、データの区切り文字をカンマからTAB記号にして拡張子を「.txt」に変更すると正しく読み込んでくれることがあります。

先ほどの「ポテチ.csv」を例にして具体的な手順を説明します。まず、「ポテチ.csv」をテキストエディタで開きます。※ここでは私が使っているTeraPadというテキストエディタを使って説明します。

ファイルを開いたらメニューから「置換」を選択し、「検索する文字列」にカンマ記号(,)を、「置換後の文字列」にTAB記号を表す(\t)を入力して置換します。

置換後のファイルはカンマがTABという空白の区切りに変わっています。

このファイルの拡張子を「ポテチ.txt」に変更して保存すると、001や002のまま表計算ソフトで読み込むことができます。

もし、お使いのWindowsで拡張子が表示されていないときは表示の設定を変更してください。

適当なフォルダを開き、上部メニューから「表示」を選択。「ファイル名拡張子」にチェックを入れると「.csv」や「.txt」などの拡張しが表示されるようになります。

CSVファイルの解釈はアプリケーションによって異なる

ここまでCSVファイルの基礎知識とありがちなトラブルの例などについてお話してきました。

繰り返しになりますが、CSVファイルはアプリケーションによって扱い方が違います。アプリケーションごとに「いや、ウチはそうしてないから!」とか「ウチのやり方に合わせてくれる?」と言うことが珍しくありません。「お前ら、協調性ないのか!」と言いたくなりますが、言ってもしょうがありません。

エクセルやアクセスなど一般向けのアプリケーションなら問題が起こってもネットで解決策が見つかるでしょうが、業務用など特殊なアプリケーションの場合は販売元や開発元などに問い合わせたほうが早いでしょう。

こう書くとCSVファイルって、いったい便利なのかどうか疑問に感じるかもしれませんが、100件や200件のデータなら手作業で入力し直せても、数千、数万のデータとなるとCSVファイルに頼るしかないことがあります。

今回はCSVファイルの概要についてお話しましたが、これだけでも覚えておくと、いつか役に立つことがあるかもしれません。

では!