SQLで選んでみよう(CSVファイルをADOで扱う⑤)


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

hirocom777.hatenadiary.org

さらなる活用を考える

 前回は、ADOがCSVファイルをどのように取り扱っているかを見てきました。CSVファイルで構成されたデータベースの可能性が見えてきましたね。また、データベースとまではいかなくてもCSVファイルを色々操作して活用することができそうです。

f:id:HiroCom777:20210226235831j:plain

そのためにはSQLコマンドを思い通りに指定できる環境が必要です。そこで、以下のツール(CSV_ReaderSQL)を作ってみました。ダウンロードして見てください。

CSV_ReaderSQL110.zip - Google ドライブ

CSV_ReaderSQLの使い方

 それではツール'CSV_ReaderSQL'の使い方について説明します。まずフォルダーを用意して、その下に処理するCSVファイルを配置します。ファイル名は'名簿.csv'とします。中身は以下のテキストにしてみましょう。コピーして使ってください。

ID,名前,性別,血液型,生年月日,備考
"001","大山洋子","女性","A","2001/03/06","カラオケ大好き"
"002","山田太郎","男性","O","1970/07/05","とくになし"
"003","小田京子","女性","AB","2020/02/13","活動的"
"004","秋山昇","男性","B","2000/01/02","結構ヒマ"

Excelのマクロを有効にした状態でCSV_ReaderSQLを開いたら、'フォルダー選択'のボタンを押して先ほどのフォルダーをデータベースとして指定します。(CSVファイルの場合は、ファイルが配置されているフォルダーがデータベースになります。)次にSQLコマンド欄に、処理に使用するSQLコマンドを書きます。'実行'ボタンを押すと処理が開始されて、新しく開かれたExcelファイルのシートに結果が表示されます。簡単ですよね!!

 実際に試してみましょう。フォルダーを作って、以下のファイルを配置してください。 CSV_ReaderSQLでフォルダーを指定してからSQLコマンド欄に以下のコマンドを入力して実行してみます。

  SELECT * FROM [名簿.csv]

ファイルの内容がすべて表示されたExcelファイルが現れました。

ID 名前 性別 血液型 生年月日 備考
001 大山洋子 女性 A 2001/03/06 カラオケ大好き
002 山田太郎 男性 O 1970/07/05 とくになし
003 小田京子 女性 AB 2020/02/13 活動的
004 秋山昇 男性 B 2000/01/02 結構ヒマ

この結果はCSV_ReaderADOの読込み結果と一緒です。CSV_ReaderADOでは、内部でこのSQLコマンドを実行していたのです。

SELECTでデータを選択する

 それではSELECTについて説明します。SELECTは以下の様に記述します。

   SELECT フィールド名 FROM テーブル名

これで、テーブルから指定されたフィールド名のデータを選択するという意味になります。 今回の場合、テーブル名とは'[]'で括られたCSVファイル名です。フィールド名とは、テーブル(CSVファイル)の列の名前で、それぞれの列の先頭行に記述してある文字がこの内容になります。先のSQLコマンドではフィールド名のところが'*'となっていました。これは、すべての列を指定するという意味になります。試しに列を選択して表示してみましょう。以下のSQLコマンドを入力して実行してみてください。

  SELECT 名前,生年月日,血液型 FROM [名簿.csv] 

指定された列だけが表示されました。

名前 生年月日 血液型
大山洋子 2001/03/06 A
山田太郎 1970/07/05 O
小田京子 2020/02/13 AB
秋山昇 2000/01/02 B

また、お気づきだと思いますが列の表示順についても指定できます。生年月日と血液型の表示順が入れ替わっています。この様にADOとSQLコマンドを使うと、一味違うCSVファイルの開き方を実現できます。VBAなどで同じ処理をするコードを書くと結構大変ですよね。

行の選択はどうするの

 今回はSQLコマンドを自在に指定できるツールを作ってみました。これで色々なSQLコマンドを試すことができます。またSELECTで列方向の選択をする方法をご紹介しました。ところで今のところ、行はすべて表示する形になっていますが、行の選択はどうするんでしょうか?ということで、次回は行方向の選択に挑戦してみようと思います。お楽しみに!!

hirocom777.hatenadiary.org

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