複数のCSVファイルを1つに連結するWebシステムを公開しました

CSVとは

CSVは日本語で「カンマ区切り」と呼ばれる形式のテキストファイルです。各データ項目(フィールド)を,(カンマ)で区切り、1レコードを改行で区切るシンプルなファイルです。実際に書くとしたのようになります▽

名前,性別,年齢
上田,男,34
武田,女,30
橋本,男,23

列方向も注目です。各行の1項目目には「名前」が来なければいけません。同様に2項目目は「性別」3項目目には年齢が入ります。縦列にきちんと整列されてなければ正しくデータを表現できません。

エクセルなどの表計算ソフトでそのまま開くこともできます。CSVは何らかのシステムのデータを吐き出すのによく使われます。逆に、新規のシステムにデータを取り込むためにも使ったりしますね。ようは「システム同士の粘着シール」みたいな役割を持っています。

複数のCSVファイルを1つにまとめたい

CSVファイルはただのテキストファイルです。複数のCSVファイルを1つにまとめたい場合、AからBへ末尾や先頭にデータをコピペするだけで完結です。1点だけ注意するとすれば、名前,性別 のような項目見出し行は除外する必要があるということでしょう。

たったこれだけのことでも、面倒だと思います。そこで調べてみると、簡単にCSVを1つにまとめる手順を紹介しているサイトをたくさん見かけます。しかしその多くは「コマンドプロンプト」や「パワーシェル」など、いわゆる「黒いあいつ」を使った手順によるものばかりでした。例えば「CSV 連結」で検索したときに出てくる上位3位は以下の通り

真っ黒い画面は使いたくないし、そもそもフィールド名が一致しない場合、前述の通りCSVは正しいデータを表せないので、破綻します。

パンがないならケーキを作ればいいじゃない。

色々探しても理想的なものに出会えないので、面倒ですが作りました。複数のCSVファイルを1つのCSVファイルに連結します。

必要なスキルは「マウスのドラッグ」だけです。所定のエリアにCSVファイルを複数ドラッグしてください。あとは「ダウンロード」ボタンを押すだけで、ドラッグされたCSVの中身を連結したCSVファイルがダウンロードされます。めちゃ簡単

フィールドの並びを考慮する必要は無し

複数のCSVファイルについて、各CSVファイルのフィールドの並び順は関係ありません。例えば

A.csvの中身

名前,性別,年齢
上田,男,34

B.csvの中身

性別,年齢,名前
女,22,れいこさん

のようなデータの場合、

名前,性別,年齢
上田,男,34
れいこさん,女,22

という結果のCSVファイルが吐き出されます。なお、フィールドの並びは「名前順」です。

ただの連結とは違うのだよ。連結とは!

一方にしか存在しないフィールド名の場合

例えばA.csvが

名前,性別,年齢,住所
上田,男,34,栃木

B.csvが

 

性別,年齢,名前,電話番号
女,22,れいこさん,000-0000-0000

の場合はどうなるでしょう?これは次のようになります

名前,性別,年齢,住所,電話番号
上田,男,34,栃木,
れいこさん,女,22,,000-0000-0000

なんとなく想像できる挙動だと思います。ようは、あまり細かいことを気にせず、連結してくれるものです。

同じデータであればフィールド名を統一しよう

以上の仕組みから、フィールド名が1文字でも違うと別の列に書き出されてしまいます。「名前」と「なまえ」は別フィールドとして吐き出されるので、前もってわかっている場合は、フィールド名を手直ししておいた方がきっと幸せになれます。

CSVSCを起動する

前置きが長くなりました。肝心のプログラムはここにあります。

csvsc
join multiple csv file

CSVSCはオープンソースです

本当に大したプログラムじゃないんですが、CSVSCはオープンソースです。Githubに載せています。それとCSVの連結の過程において、データをサーバに転送することは一切行っていません。実は連結の仕事をしているのはあなたのブラウザ自身です。合同会社サンドボックスのサーバはただそのプログラムをホスティングしているだけです。だからデリケートなデータであっても、ご安心ください。