2023年4月16日日曜日

PowerShellでCSVファイルを操作・編集・保存する方法

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 件のコメント:

ウェブサイトのURLにおけるトレイリングスラッシュの解釈と有無による動作の違い

インターネットが現代社会におけるコミュニケーションの基盤となっている今日、ウェブサイトのURLはビジネスや個人ブランディングにとって重要な役割を果たしています。URLは単にウェブページへの経路を示すだけでなく、SEO(検索エンジン最適化)においても重要な要素です。この記事では、U...