IT技術と資産運用

ITのmiyamon-log

【PowerShell】CSVファイルをDBのように扱う

 

CSVファイルをDBのように扱う方法を紹介します。

CSVファイルを定期的にコマンドで解析したい場合などに有効です。

 

PowerShellでCSVファイルを読み込む

まず、CSVファイルを用意してPowerShellで読み込みましょう。

1行目で$CSV_DATA 変数にcsvの情報をセットし、2行目でCSVのヘッダ情報を追加しています。
[crayon-66272ffed863f467799328/]
実行イメージ

 

 

読み込んだCSVファイルを表示

読み込んだファイルの表示には Select-Object コマンドを使います。先ほどCSVの情報を読み込んだ $CSV_DATA 変数を参照してみましょう。
[crayon-66272ffed8646327441096/]
実行イメージ

 

 

表示する情報を制限する。

SQLなどでは where句に条件を指定することで表示するデータを制限できます。

PowerShellでは Where-Object を使うことで表示するデータを制限できます。

先ほどの結果からtypeが鬼 のデータのみを表示したい場合は以下のようになります。
[crayon-66272ffed8648083828984/]
実行イメージ

気を付けないといけないのは、Select-Object の後に Where-Object を指定してください。

Format-Table の後に Where-Object を指定すると結果が正しく表示されません。実際に実行してみましょう。
[crayon-66272ffed864a231512986/]
実行イメージ

 

Where-Objectの使い方

先ほど説明した Where-Object の {$_.type -eq "鬼"} は  -eq は イコール という意味になります。プログラムやSQLと扱いが違うため注意が必要です。

マイクロソフトのページに比較演算子が纏まってますのでそちらを参考にしてください!

[blogcard url="https://docs.microsoft.com/ja-jp/powershell/scripting/samples/removing-objects-from-the-pipeline--where-object-?view=powershell-7"]

 

複数条件を指定する場合

抽出条件を複数指定する方法は2通りあります。

一つ目は Where-Object をパイプでつなぎ、2つ記述する方法です。
[crayon-66272ffed864c189069328/]
 

二つ目は条件をカッコ () で囲み、 -and でつなぎ条件のみを2つ記述する方法です。
[crayon-66272ffed864e554434006/]
 

実行イメージ(Format-Table 無し/有り)

この結果により、鬼滅の刃の たんじろう と いのすけ が同い年なのが分かりましたね。

 

まとめ

今回はPowerShellでできる手法の一つをざっくり纏めました。

このレベルであればエクセルで操作したほうが圧倒的に楽です。ただPowerShellはバッチ化することができます。

CSVを定期的に読み込み、一定の条件のデータが検出されたら通知を飛ばすなどいろいろなことができます。

非常にざっくりな説明ですが、業務効率などのきっかけになれば幸いです。

 

類似記事でSQLのコマンド一覧なども纏めてます。よろしければご活用ください。

  • B!