亀の甲羅2

今日もまた朝とく起きて励まなん窓に明るきありあけの月

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