PowerShellメモ ヘッダ付きのCSVファイルを読み込んで列名を指定して1行づつ取得してみる

PowerShell

CSVファイルを処理するときC#でモジュール作るほどでもないなぁ…ってものがあったときPowerShellならサクッとできるんかいな?
ってことで、試してみることに。
(この記事ではカラム=列、レコード=行、フィールド=1要素と同じ意味ってことにする)

ポイントはこんなとこ。

  • Import-CsvコマンドレットでCSVを読み取る
    (Import-Csvはファイルの1行目はヘッダ、2行目以降はデータとして認識することに注意)
  • 1要素は$行.列名の形式で取得する

んで、まずはサンプルファイル。
ヘッダでは1列目は"no"、2列目は"name"、3列目は"apple"って列名で定義しとく。
ファイル名はSample.csvって名前で作成。

no,name,value
1,apple,10
2,orange,15
3,grape,30

んで、PowerShellのスクリプトの内容はこんな感じ。

# 処理共通の変数を初期化する(ファイルのパスを定義しておく)
$location = "C:\Users\tetsuyanbo\Desktop\Sample.csv"
# CSVを読み込む(念のため-Delimiterで区切り文字を指定する)
$data = Import-Csv $location -Delimiter ","
# 列名を指定しながら1行づつコンソールに出力する
Write-Host "--- 1行づつ出力する ---"
foreach($line in $data)
{
    Write-Host "no:$($line.no) name:$($line.name) value:$($line.value)"
}

実行したらこんな感じ。
ヘッダで定義した列名で指定しながら1行づつ内容を出力できと。

--- 1行づつ出力する ---
no:1 name:apple value:10
no:2 name:orange value:15
no:3 name:grape value:30

んまま、明日への自分へのメモってことで。