powershell におけるCSVの扱い方(2):メモリの内容をCSVオブジェクトへ変換
CSVオブジェクト化
何らかの処理を行って得られた2次元データ(表形式になるデータ)をヘッダ付きでCSV化したい時がままある。そんなときのお決まりのテンプレート。
目次
本文
1. 文字列(メモリの内容)をCSVオブジェクトに変換
変数の中身をCSVオブジェクトにコンバートする。こういうときは「ConvertFrom-Csv」を使う。なかなか名前が憶えづらいが。
# 何かの処理をして下記のようなデータが作成できた(と仮定する) $a = "鈴木さん,170cm,60Kg`n佐藤さん,150cm,55kg" $a | ConvertFrom-Csv -Delimiter "," -Header "氏名","身長","体重"
カンマ(,)でデータを区切り、改行(`n バックスラッシュ+n)でレコードを区切る。そんなStringを作ってあげれば、「ConvertFrom-Csv」でCSVオブジェクトに変換できる。
実行結果は以下の通り。
PS > $a = "鈴木さん,170cm,60Kg`n佐藤さん,150cm,55kg" $a | ConvertFrom-Csv -Delimiter "," -Header "氏名","身長","体重" 氏名 身長 体重 -- -- -- 鈴木さん 170cm 60Kg 佐藤さん 150cm 55kg
CSVオブジェクトになってしまえばデータへのアクセス性が良くなるし、そのままCSVファイルへ出力することもできる。
2. その他試したこと
1.配列を「ConvertFrom-Csv」にかけると、ひとつひとつの要素が縦に並ぶ
2.配列を要素に持つ配列で仮想的に2次元配列を作成して「ConvertFrom-Csv」にかけてみたがうまくいかなかった
ということで、CSVオブジェクトに変換するためのINPUTとなる情報は、今のところデリミタで区切られたString文字列しか知らない・・・。
バージョン情報
> $PSVersionTable Name Value ---- ----- PSVersion 5.1.19041.1023