PowerShell で CSV ファイルを結合する方法
-
CSV
形式 -
PowerShell で
.csv
ファイルをフィルタリングする -
PowerShell で各
.csv
ファイルオブジェクトを取得する - PowerShell で CSV ファイルの内容をマージする
- PowerShell でマージされた内容をテキストファイルに書き込む

複数の CSV ファイルをマージし、そのデータを PowerShell でテキストファイルに書き込む必要がある場合があります。Import-Csv
および Export-Csv
コマンドレットを使用してこの操作を実行できます。
CSV
形式
さまざまな目的のために利用できるさまざまなファイル形式があります。CSV
は、データを保存するためのシンプルな構造を使用します。
異なるプログラム間でデータを交換するために使用できます。その名前 CSV
(カンマ区切り値)が示すように、データはカンマで区切られています。
CSV
ファイルに保存される情報は以下のようになります。
UserName,Identifier,First Name,Last Name
jak12,1001,Harry,Smith
Rock90,1002,Jeremy,Hamilton
Rick23,1003,Rakesh,Donas
User01,1004,Lokie,Ferguson
区切り文字はスペース、セミコロン、またはその他の文字である可能性があります。
PowerShell を使用してマージする 2つの csv
ファイルを作成しましょう。
username.csv
の内容:
username2.csv
の内容:
PowerShell で .csv
ファイルをフィルタリングする
指定された場所にあるすべての .csv
ファイルタイプを取得するために、Get-ChildItem
コマンドレットを使用することをお勧めします。 -Filter
パラメーターを渡して .csv
拡張子のファイルをフィルタリングできます。
.csv
ファイルへのフォルダーパスは、あなたの場合に異なるかもしれません。
$csvFilePath = "D:\csvfiles"
$csvFileList = Get-ChildItem $csvFilePath -Filter *.csv
$csvFileList
にあるコンテンツを確認しましょう。
$csvFileList
出力:
PowerShell で各 .csv
ファイルオブジェクトを取得する
フルネームを持つ各ファイルオブジェクトを取得しましょう。Select-Object
コマンドレットを使用して、拡張されたプロパティを持つ各オブジェクトを取得できます。
前のステップの出力を Select-Object
コマンドにパイプしています。
$csfFilesToImport = $csvFileList | Select-Object -ExpandProperty FullName
$csfFilesToImport
変数を表示すると、両方の CSV
ファイルオブジェクトがフルネームで利用可能であることがわかります。
$csfFilesToImport
出力:
PowerShell で CSV ファイルの内容をマージする
すべての CSV
ファイルを取得したので、各ファイルの内容をインポートしましょう。これにより、共通のヘッダーローで内容を簡単にマージできます。
パイプで渡された CSV
ファイルの内容から表のようなオブジェクトを構築するために Import-CSV
を使用できます。
$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles
出力:
情報は提供された 2つの CSV
ファイルからマージされました。
PowerShell でマージされた内容をテキストファイルに書き込む
上記のオブジェクトを CSV
文字列に変換し、それらをテキストファイルに保存できます。Export-Csv
コマンドレットが使用可能です。
内容が置き換えられずに追加されることを確認するために、Append
パラメーターを使用する必要があります。
$importedCsvFiles | Export-Csv D:\merged.txt -NoTypeInformation -Append
出力:
これにより、merged.txt
という新しいテキストファイルが作成されるはずです。そのファイルの内容は、上記の 2つの CSV
ファイルからマージされることになります。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.