さらなる活用を考える(CSVファイルをADOで扱う④)


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

hirocom777.hatenadiary.org

さらなる活用を考える

 前回は、意図しないデータ変換を防ぐCSVファイルの形式について考えてみました。すべてのデータをダブルクォーテーションで括って文字列型に固定することで意図しないデータ変換を防げることが判りました。考えてみればCSVファイルはテキストファイルなので、この方法は無難だと思います。

f:id:HiroCom777:20210221164228j:plain

 ところでこの連載ではADOを使用してCSVファイルを扱うことを主題にしていることは、すでに申しあげたとおりです。ADOは、そもそもデータベースを取り扱うためのもので、今回の例でもCSVファイルをデータベース(のテーブル)として扱っています。つまり、CSVファイルをADOで扱えば単にファイルを開くだけでなくデータベースとしてさまざまな処理ができるのです。

色々な処理ができるように考えてみる

 しかしながら現在のツールCSV_ReaderADOは、単純に選択したCSVファイルをExcelシートに展開する機能しか持っていません。そこで今回は、さまざまなデータ処理ができる機能を持ったツールを考えてみたいと思います。

 それではどうやって機能を持たせるかです。ADOに限らずデータベースを操作する場合にはSQLを使用するのが一般的です。実はCSV_ReaderADOでもコードの中にSQLコマンドを記述しています。これを自在に指定できるようにすれば、色々な操作が可能にできそうです。

 SQLとは、データベースの定義や操作を行うためのデータベース言語です。手続き型のプログラミング言語ではありません。ADOではSQLを使用してデータベースに条件を指定してデータを抽出したり、組み合わせたり、さまざまな操作を行います。

CSVファイルをデータベースとして扱う方法

 一般的にデータベースは複数のテーブル(データが集まった表のようなもの)から構成されます。ADOでCSVファイルでデータベースを構築する場合、以下の構成になります。

  • データベース CSVファイルが配置されているフォルダー
  • テーブル 個々のCSVファイル

ADOではフォルダーを指定することでCSVファイルの集まりをデータベースとしているのです。

 実際にSQLコマンドを使用した例を見てみましょう。CSV_ReaderADOでSQLコマンドを使用しているとお話ししましたが、その内容を見てみます。CSV_ReaderADOのソースリスト全体は以下を参照してください。CSV_ReaderADO本体のダウンロードもできます。

hirocom777.hatenadiary.org

ここでご紹介している2つのプロシージャのうちの1つ、cmdFile_Click内の中ほどに以下の一文があります。

ReadCsvDataBase folderName, "SELECT * FROM [" & Dir$(fileName) & "]", outputBook.ActiveSheet.Range("A1")

この一文で、もう1つのプロシージャでいるReadCsvDataBaseを呼び出しています。ReadCsvDataBaseは、その名のごとくCSVファイルを読み込むプロシージャです。ReadCsvDataBaseは、呼び出す際に3つの引数を必要とします。

  • フォルダー名

 先頭で指定している’folderName’がこれにあたります。対象となるCSVファイルがあるフォルダーを指定します。

  • SQLコマンド

 2番目に指定してある'"SELECT * FROM [" & Dir$(fileName) & "]"'がSQLコマンドです。

  • 出力先

 3番目に指定してある'outputBook.ActiveSheet.Range("A1")'が読み込んだ結果の出力先です。Excelシートのセルを指定すると、指定されたセルを左上の原点として読み込んだ内容を表示します。

ReadCsvDataBaseは、1番目のフォルダー名でデータベースを指定して、2番目のSQLコマンドで抽出するデータを指定、3番目の出力先に表示するプロシージャっていうことです。それでは、ここで記述されているSQLコマンドについて見てみましょう。ここで記述されているSQLコマンドは、実際の展開では以下の様になります。

 SELECT * FROM [CSVファイル名]

ここで記述されているSQLコマンドはSELECT文と呼ばれるものです。SELECT文はデータベースからデータを選択して取得する命令です。個々のCSVファイルがデータベースのテーブルとなることは、先に述べました。結論から言うと、『CSVファイルで指定したテーブルからすべてのデータを取得せよ』という命令です。この命令を使ってCSVファイルの内容を読み込んでいます。

ツールを考えてみる

 これで、ADOがCSVファイルをどのように取り扱っているか、概略は分かったと思います。次回はこれを踏まえてCSVファイル色々な処理ができるツールを検討してみようと思います。お楽しみに!!

hirocom777.hatenadiary.org

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