複数のCSVファイルを1つに結合する必要があります。各CSVにはヘッダーがあります。列ヘッダーの1つが同じです。理想的には、最終ファイル(all_out.csv)には単一のヘッダーが必要です。
PowerShellコードを実行します。
Import-Csv out_1_result.csv,out_2_result.csv,out_3_result.csv,out_4_result.csv,out_5_result.csv,out_6_result.csv,out_7_result.csv,out_8_result.csv,out_9_result.csv,out_10_result.csv,out_11_result.csv,out_12_result.csv,out_13_result.csv,out_14_result.csv,out_15_result.csv,out_16_result.csv,out_17_result.csv,out_18_result.csv,out_19_result.csv,out_20_result.csv,out_21_result.csv,out_22_result.csv,out_23_result.csv,out_24_result.csv,out_25_result.csv,out_26_result.csv,out_27_result.csv,out_28_result.csv |
Export-Csv all_out.csv -NoType
そして私はエラーになってしまいます
Import-Csv:メンバー「URL」はすでに存在しています。
これを無視/修正する方法はありますか?
列ヘッダーの1つが同じです
つまり、各CSVには2つの列ヘッダー「URL」がありますか? Import-Csv
は、各ヘッダーがプロパティ名になるオブジェクトを作成します。 @{Id=10; Url='example.com'}
と同じ名前を再度使用すると、競合します。
Import-Csvコマンドレットだけで「異なる列名を使用する」と「ヘッダー行をスキップする」ことはできないため、csvファイルを変更しないと、これが正しく機能する方法はありません。
私が考えることができる最も簡単な変更は、それぞれからヘッダー行を削除することです、例えば:
$CsvFiles = 'out_1_result.csv','out_2_result.csv','out_3_result.csv','out_4_result.csv','out_5_result.csv','out_6_result.csv','out_7_result.csv','out_8_result.csv','out_9_result.csv','out_10_result.csv','out_11_result.csv','out_12_result.csv','out_13_result.csv','out_14_result.csv','out_15_result.csv','out_16_result.csv','out_17_result.csv','out_18_result.csv','out_19_result.csv','out_20_result.csv','out_21_result.csv','out_22_result.csv','out_23_result.csv','out_24_result.csv','out_25_result.csv','out_26_result.csv','out_27_result.csv','out_28_result.csv'
$NewFileNames = $CsvFiles | ForEach-Object {
$NewFileName = $_ + "_noheader.csv"
Get-Content $_ | Select-Object -Skip 1 | Set-Content $NewFileName -Encoding UTF8
$NewFileName # write new name to output stream
}
そして、ヘッダー行がない場合は、すべてインポートして、ヘッダー行をパラメーターとして指定します。
Import-Csv -Path $NewFileNames -Header 'Col1', 'Col2', 'Url1', 'Url2' | Export-Csv ...