|
パイプ区切りのテキスト ファイルのセットを読み込んで、各ファイルの特定の列の一意の値の数と、ファイル内の行数を取得しようとしています。使ってみImport-CSV
ましたが、何時間もかかり、大量のメモリを使い果たしていました。ファイルは 20MB から 500MB の範囲で、10 から 15 個のファイルです。
ストリーム リーダーを使用した方が高速ですか? 一意の値をどのように数えますか?
Get-ChildItem .\*filtered.txt -Name |
ForEach-Object {
if($dayofweek -eq 1) {
$importFile = Import-Csv $_ -Delimiter '|'
} else {
$importFile = Import-Csv $_ -Delimiter '|' -Header @("a", "Order-ID", "c", "d", "e", "f", "g", "h")
}
$numRows = $importFile | Measure-Object | Select-Object -expand count
$numUniqueOrderID = $importFile | Select Order-ID -Unique
echo "Filename: $_ `t Rows: $numRows `t"
echo "Unique Order-IDs"
$numUniqueOrderID
echo `n
}