HOWTO · PowerShell

PowerShell で CSV ファイルを結合する方法

複数の CSV ファイルを統合し、データをテキストファイルに書き込む必要がある場合があります。この操作を実行するために、Import-Csv および Export-Csv コマンドレットを使用できます。

複数の 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 ファイルを作成しましょう。

CSV ファイル

username.csv の内容:

ユーザー名 CSV ファイル

username2.csv の内容:

username2 CSV ファイル

PowerShell で .csv ファイルをフィルタリングする

指定された場所にあるすべての .csv ファイルタイプを取得するために、Get-ChildItem コマンドレットを使用することをお勧めします。 -Filter パラメーターを渡して .csv 拡張子のファイルをフィルタリングできます。

.csv ファイルへのフォルダーパスは、あなたの場合に異なるかもしれません。

$csvFilePath = "D:\csvfiles"
$csvFileList = Get-ChildItem $csvFilePath -Filter *.csv

$csvFileList にあるコンテンツを確認しましょう。

$csvFileList

出力:

PowerShell で CSV ファイルをフィルターする

PowerShell で各 .csv ファイルオブジェクトを取得する

フルネームを持つ各ファイルオブジェクトを取得しましょう。Select-Object コマンドレットを使用して、拡張されたプロパティを持つ各オブジェクトを取得できます。

前のステップの出力を Select-Object コマンドにパイプしています。

$csfFilesToImport = $csvFileList | Select-Object -ExpandProperty FullName

$csfFilesToImport 変数を表示すると、両方の CSV ファイルオブジェクトがフルネームで利用可能であることがわかります。

$csfFilesToImport

出力:

PowerShell で各 CSV ファイルオブジェクトを取得する

PowerShell で CSV ファイルの内容をマージする

すべての CSV ファイルを取得したので、各ファイルの内容をインポートしましょう。これにより、共通のヘッダーローで内容を簡単にマージできます。

パイプで渡された CSV ファイルの内容から表のようなオブジェクトを構築するために Import-CSV を使用できます。

$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles

出力:

PowerShell で CSV ファイルの内容をマージする

情報は提供された 2つの CSV ファイルからマージされました。

PowerShell でマージされた内容をテキストファイルに書き込む

上記のオブジェクトを CSV 文字列に変換し、それらをテキストファイルに保存できます。Export-Csv コマンドレットが使用可能です。

内容が置き換えられずに追加されることを確認するために、Append パラメーターを使用する必要があります。

$importedCsvFiles | Export-Csv D:\merged.txt -NoTypeInformation -Append

出力:

これにより、merged.txt という新しいテキストファイルが作成されるはずです。そのファイルの内容は、上記の 2つの CSV ファイルからマージされることになります。

PowerShell でマージされたコンテンツをテキストファイルに書き込む