複数ファイルの統合(CSVファイルをADOで扱う⑯)

CSVファイルをADOで扱う連載の16回目です。前回の記事はこちらになります。

hirocom777.hatenadiary.org

複数ファイルから読込む

前回は、ORDER BYを使った読込みデータの並べ替え方法をご紹介しました。読込みと並べ替えを一度にできると後の処理が便利です。

f:id:HiroCom777:20211024125537j:plain

今までは1つのCSVファイルから読込んでいましたが、今回は複数のCSVファイルを色々な形で読込んでみようと思います。

今回もSQLを指定してCSVファイルを確認できるツール(CSV_ReaderSQL)を使います。ツールは以下からダウンロードしてください。

CSV_ReaderSQL110.zip - Google ドライブ

ファイルの統合

毎月のデータが記録されているファイルが月毎に複数あります。これらのファイルを1つにまとめて表示するにはどうしたらいいでしょうか?ファイルの内容は以下の様になっています。

1月のファイル(1月.csv

"日付","価格"
"2021/1/2","117"
"2021/1/9","100"
"2021/1/16","111"
"2021/1/23","103"
"2021/1/30","107"

2月のファイル(2月.csv

"日付","価格"
"2021/2/6","105"
"2021/2/13","112"
"2021/2/20","116"
"2021/2/27","101"

任意のフォルダーの下に上の2つのファイルがあります。この内容を1つにまとめてみようと思います。ツールで任意のフォルダーを指定しておいて、SQLコマンド欄に以下を入力して実行ボタンを押してみてください。

SELECT * FROM [1月.csv]
UNION ALL
SELECT * FROM [2月.csv]

結果は以下の様になりました。

日付 価格
2021/1/2 117
2021/1/9 100
2021/1/16 111
2021/1/23 103
2021/1/30 107
2021/2/6 105
2021/2/13 112
2021/2/20 116
2021/2/27 101

2つのファイルが1つにまとまりました。

UNION ALL

UNION ALLは、2つのテーブル(CSVファイル)を統合できます。また、2つ以上のテーブルを統合する事もできます。3つのファイルを統合する場合は、以下の様にSQL文を記述します。

SELECT * FROM [1月.csv]
UNION ALL
SELECT * FROM [2月.csv]
UNION ALL
SELECT * FROM [3月.csv]

UNION ALLで統合するテーブルの条件は以下になります。

  1. SELECTで指定する列のデータ型が同じか、変換可能である
  2. SELECTで指定する列数が同じ

ということは、異なる名前の列もデータ型があっていれば統合できるわけです。以下のSQL文を入力して実行してみましょう。(注:ここで扱っているのはCSVファイルで全データが文字列型です)

SELECT 日付 FROM [1月.csv]
UNION ALL
SELECT 価格 FROM [2月.csv]

結果は以下の様になりました。

日付
2021/1/2
2021/1/9
2021/1/16
2021/1/23
2021/1/30
105
112
116
101

この様な使い方はまずないと思うのですが、異なる名前の列を統合できるということは覚えておいた方がいいと思います。

統合結果の並べ替え

統合した結果を指定の条件で並べ替えることもできます。前回ご紹介したORDER BYを使います。以下のSQLを入力して実行してみてください。

SELECT * FROM [1月.csv]
UNION ALL
SELECT * FROM [2月.csv] ORDER BY 価格 ASC

結果は以下の様になりました。

日付 価格
2021/1/9 100
2021/2/27 101
2021/1/23 103
2021/2/6 105
2021/1/30 107
2021/1/16 111
2021/2/13 112
2021/2/20 116
2021/1/2 117

並べ替えを指示するORDER BYは、最後のSELECT文に付与してください。

次回も統合

いかがでしょうか。例にも示した通りUNION ALLは複数の記録ファイルをまとめたりするときに便利です。ところで、他にもUNIONなるものがあって、こちらもファイルの統合ができます。ただし、少しばかり動きが違うのです。次回はこちらをご紹介したいと思います。お楽しみに!!

hirocom777.hatenadiary.org CSVファイルをADOで扱う連載記事はコチラからどうぞ