如何按Server Name字段拆分CSV数据为多个对应独立文件
CSV按Server Name字段拆分实现方法
以下提供三种常用场景的实现方案,可根据你的使用环境直接选用:
1. Python跨平台实现(推荐,兼容性最强)
直接使用Python自带的csv模块,无需安装第三方依赖,代码如下:
import csv from collections import defaultdict # 替换为你的原始CSV文件路径 input_file = "source.csv" grouped_data = defaultdict(list) # 读取原始CSV数据并按服务器名分组 with open(input_file, 'r', newline='', encoding='utf-8') as f: reader = csv.reader(f) # 提取表头 header = next(reader) for row in reader: server_name = row[0] grouped_data[server_name].append(row) # 按分组生成独立CSV文件 for server, rows in grouped_data.items(): output_file = f"{server}.csv" with open(output_file, 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) # 写入表头 writer.writerow(header) # 写入对应服务器的所有数据行 writer.writerows(rows)
运行后会在当前目录生成BR502.csv、BR503.csv等独立文件,每个文件都包含完整表头和对应服务器的全部数据。
2. Linux/macOS Shell一行实现
使用awk命令直接处理,适合命令行环境:
awk -F '","' 'NR==1{header=$0} NR>1{fname=substr($1,2)".csv"; if(!seen[fname]++) print header > fname; print $0 >> fname; close(fname)}' source.csv
命令逻辑说明:
- 读取第一行保存为表头
- 从第二行开始提取第一个字段的服务器名作为输出文件名
- 首次写入某个服务器文件时先写入表头,再追加数据行
3. Windows PowerShell实现
适合Windows系统原生PowerShell环境,无需额外安装软件:
# 替换为你的原始CSV文件路径 $csv = Import-Csv -Path "source.csv" # 按Server Name字段分组 $groups = $csv | Group-Object -Property "Server Name" # 每个分组导出为单独CSV foreach ($group in $groups) { $outputPath = ".\$($group.Name).csv" $group.Group | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8 }
内容的提问来源于stack exchange,提问作者Empty Coder
相关产品推荐
相关产品推荐

