You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell导入无表头CSV并导出为带自定义表头的多份CSV

问题描述

需要导入一份无表头的源CSV文件,并拆分为多份CSV文件。目前用Import-CSV的-Headers参数指定了临时表头来整理数据,但导出新CSV时想换成自定义表头,现在导出的表头还是导入时指定的那些,代码如下:

# Set variables
$csv_source = "\\firmname\\dfs1\\CMWS\\CM.TXT"
$custom1_file = "C:\\WSGEN\\custom1.csv"
$custom2_file = "C:\\WSGEN\\custom2.csv"

#Import source CSV
$csv_orig_data = Import-CSV -Path $csv_source -Header 'C1ALIAS','C1DESCRIPT','C2ALIAS','C2DESCRIPT'

# Grab C1 columns
$c1data = $csv_orig_data | Select-Object C1ALIAS, C1DESCRIPT
$c1data | Add-Member -MemberType NoteProperty -Name "ENABLED" -Value "Y"
$c1data | Add-Member -MemberType NoteProperty -Name "HIPAA" -Value "N"
$c1data | Export-CSV -Path $custom1_file -NoTypeInformation -Delimiter '|'

# Grab C2 columns
$c2data = $csv_orig_data | Select-Object C2ALIAS, C2DESCRIPT, C1ALIAS
$c2data | Add-Member -MemberType NoteProperty -Name "ENABLED" -Value "Y"
$c2data | Add-Member -MemberType NoteProperty -Name "HIPAA" -Value "N"
$c1data | Export-CSV -Path $custom2_file -NoTypeInformation -Delimiter '|'
解决方案

要修改导出CSV的表头,关键是在导出前给数据对象的属性重命名,下面两种方法都能实现:

方法1:用Select-Object直接重命名属性

通过哈希表语法给属性指定新名称,导出时就会用这个新名称当表头:

# 处理custom1.csv,同时重命名表头
$c1data = $csv_orig_data | Select-Object `
    @{Name='别名'; Expression={$_.C1ALIAS}}, `
    @{Name='描述'; Expression={$_.C1DESCRIPT}}
$c1data | Add-Member -MemberType NoteProperty -Name "启用状态" -Value "Y"
$c1data | Add-Member -MemberType NoteProperty -Name "HIPAA合规" -Value "N"
$c1data | Export-CSV -Path $custom1_file -NoTypeInformation -Delimiter '|'

语法说明:@{Name='新表头名'; Expression={$_.原属性名}},Name是你想要的表头,Expression用来获取原数据的对应值。

方法2:创建自定义对象

直接构造新的自定义对象,一次性定义好所有需要的表头和对应值,不用后续追加字段:

# 处理custom2.csv,创建自定义对象定义表头
$c2data = $csv_orig_data | ForEach-Object {
    [PSCustomObject]@{
        '分类别名' = $_.C2ALIAS
        '分类描述' = $_.C2DESCRIPT
        '关联主别名' = $_.C1ALIAS
        '启用状态' = "Y"
        'HIPAA合规' = "N"
    }
}
$c2data | Export-CSV -Path $custom2_file -NoTypeInformation -Delimiter '|'

额外修复:代码里的变量错误

你的代码最后导出custom2.csv时,错用了$c1data变量,应该改成$c2data,不然会把c1的数据重复导出到custom2文件里,修正后的代码已经在上面的示例里体现了。

内容的提问来源于stack exchange,提问作者WR7500

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 07:35:36