CSVファイルを読み込み、加工し、出力する方法をPowerShellスクリプトを使って解説。
CSVファイルは、データのインポートやエクスポートに頻繁に使用される形式です。PowerShellを使うと、CSVファイルの操作や編集を簡単かつ効率的に行うことができます。この記事では、CSVファイルを読み込み、加工し、出力する方法をPowerShellスクリプトを使って解説します。
1.CSVファイルをインポートする
まず、CSVファイルをインポートしてPowerShellで扱えるようにします。特定のエンコーディングでファイルを読み込む場合は、次のコードを実行します。
$streamReader = New-Object System.IO.StreamReader("C:\tmp\input.csv", [System.Text.Encoding]::GetEncoding("Shift_JIS"))
$content = $streamReader.ReadToEnd()
$streamReader.Close()
Set-Content -Path "C:\tmp\converted_input.csv" -Value $content -Encoding "UTF8"
$csvData = Import-Csv -Path "C:\tmp\converted_input.csv"
このコードでは、Shift_JISエンコーディングでCSVファイルを読み込んで、UTF-8エンコーディングに変換しています。適切なパスとエンコーディングを指定してください。
やっていることは意外と複雑で、.NET FrameworkのStreamReaderを使用してShift-JISエンコードのCSVファイルを読み込み、UTF-8に変換し、新しいファイルに出力します。その後、UTF-8でエンコードされた新しいファイルをImport-Csvコマンドでインポートしています。
S-JISのCSVだとなぜか読み込みが、
Import-Csv : メンバー "��" は既に存在します。
発生場所 行:1 文字:12
というようなエラーになり嵌った。一応これでエンコーディングの問題を解決できるはずです。
※なおCSVファイルの1行目はカラム名扱いとなります。
2.CSVデータの操作・編集
CSVデータを操作・編集するためには、PowerShellの機能を活用します。例えば、特定の列の値を変更したい場合は、次のようにします。
$updatedCsvData = $csvData | ForEach-Object { if ($_.ColumnName -eq "old_value") { $_.ColumnName = "new_value" } $_ }
このコードでは、ColumnName列の値がold_valueである行の値をnew_valueに置き換えています。
3.編集されたCSVデータをエクスポートする
最後に、編集されたCSVデータをファイルにエクスポートします。
$updatedCsvData | Export-Csv -Path "C:\tmp\output.csv" -NoTypeInformation -Encoding UTF8
これで、編集されたCSVデータがoutput.csvファイルとして保存されます。
PowerShellを使ってCSVファイルを効率的に操作・編集する方法を学びました。これで、データの取り扱いが簡単になり、作業効率が向上することでしょう。さまざまな操作・編集方法がありますので、要件に応じてPowerShellスクリプトをカスタマイズしてください。例えば、データのソートやフィルタリング、列の追加や削除など、多様な操作が可能です。
また、CSVファイルを操作する際には、注意事項もあります。たとえば、元のファイルに対して直接編集を行わずに、新しいファイルに変更を保存することで、データの損失を防ぐことができます。
PowerShellを活用して、CSVファイルを効率的に操作・編集できるようになることで、データ管理や分析作業がスムーズに行えるようになります。これを機に、PowerShellでデータ操作のスキルを磨いてみてください。
ちなみに1.で読み込んだCSVのデータはごく簡単にJson形式へ変換できる。(次回記事)
0 件のコメント:
コメントを投稿