8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Import-Csv - 成员已在场问题

Regular Jo 1月前

23 0

我必须将多个 CSV 文件合并为一个。每个 CSV 都有一个标题。其中一列的标题是相同的。理想情况下,最终文件 (all_out.csv) 必须有一个标题。我运行...

我必须将多个 CSV 文件合并为一个。每个 CSV 都有一个标题。其中一列的标题是相同的。理想情况下,最终文件 (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、本帖标题:Import-Csv - 成员已在场问题
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Regular Jo在本站《powershell》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您的 CSV 中至少有一个重复的列“URL”。PowerShell 不支持该功能。从输入文件中删除重复的列即可修复该问题。

  • 其中一列标题相同

    这意味着每个 CSV 都有两列标题“URL”? Import-Csv 创建对象,其中每个标题都成为属性名称,例如 @{Id=10; Url='example.com'} ,再次使用相同的名称就会发生冲突。

    如果您不更改 csv 文件,这将无法干净地工作,因为仅使用 Import-Csv cmdlet 无法说“使用不同的列名”以及“跳过标题行”。

    我能想到的最简单的改变就是删除每个标题行,例如:

    $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 ...
    
  • dsh 1月前 0 只看Ta
    引用 4

    我认为您只需读取每个文件并使用 GC | select -skip 1 | convertfrom-csv 即可跳过对临时文件的需要。用例显然会有所不同。

  • @Matt 是的,这看起来也是可行的。而且,因为有unicode内容而没有指定编码=损坏数据。有ASCII数据并指定UTF8=工作正常。错误地指定它以使其更有可能工作。在PowerShell ISE中比较[pscustomobject]@{'x'='↮'} | epcsv x; gc x和[pscustomobject]@{'x'='↮'} | epcsv x -encoding utf8; gc x

  • 放在 -Encoding 命令末尾

    Import-Csv -Path $output -Encoding UTF8
    
    Export-csv -NoTypeInformation -Path $output -Encoding UTF8
    
返回
作者最近主题: