powershell - 通过 Powershell 将一行数据添加到 CSV 文件
问题描述
我有一个 Powershell 脚本,它生成一个包含名称和电子邮件地址的 .csv 文件。我希望能够在文件顶部添加带有标题的行。
我可以使用文本文件执行此操作,但由于某种原因,我无法成功使用 .csv 文件。建议?
[string]$FileDS = Get-Date -Format "yyyyMMdd"
[string]$outFile = "${outpath}\${members}_${FileDS}.csv"
New-Item -ItemType file $outfile -Force
$object | export-csv -path $outfile
解决方案
CSV 格式
有一个 IETF 标准 RFC 4180 指定如何生成 CSV 文件以及它可以包含和不可以包含的内容。要直接回答您的问题,无法在 CSV 文件中添加“标题”。总结规范,您的文件需要具有以下内容
- 每行数据通过使用逗号分隔符(val1、val2、val3)将数据分成列
- 每行结束,新行以回车符开始 (val1, val2, val3 CRLF)
- 文件的最后一行不包含回车
- 可选标题行可以像普通数据行一样添加,将通过包含标题参数来设置
如您所见,没有设置“标题”的标准方法。但是,如果您将“标题”称为“标题”,则可以使用以下命令添加它
$file = import-csv $outfile -Header a , b , c | export-csv $file
其中 a、b、c 是您的标题。
数据格式
您的数据最终应如下所示
Header1, Header2, Header3 CRLF
value11, value12, value13 CRLF
value21, value22, value23 CRLF
value31, value32, value32
通过包含以下 mimetype 参数,将标题行指示为与数据行分开的内容
text/csv; header=present
相对于
text/csv; header=absent
如您所知,唯一的限制是 mimetype 参数、分隔符和回车。如果字段中的数据包含换行符、逗号和/或双引号,则字段数据用双引号括起来。为了进一步分解 Mimetype,媒体类型是 text,子类型是 csv,以及两个可选参数:header 和 charset。
由于规范明确概述了特殊/保留字符以及可选参数,我可以放心地说没有办法添加标题行。
更多信息
由于您最初的帖子指的是规范中未定义的“标题”,因此我尽我所能回答您的问题。CSV 格式是 Tabluar Data 标准的特定实例化。有几种不同的表格数据格式,W3C 和 OKI 等组织已经创建了包含比 RFC 4180 标准更多功能的标准化。
您可能想查看 CSV Schema,我认为它是 OKI 标准的一部分。同样,这一切都基于标准,因此它实际上取决于消耗和解析此 CSV 文件的内容。
如果您有任何其他问题,请随时添加评论,我会尽力回复。
链接
以下链接将带您了解三种表格数据格式的官方规范。如果有疑问,我肯定会使用 IETF 标准,因为它是迄今为止采用最广泛的标准,但是我已经包含了 W3C 和 OKI 规范,以防您的消费应用程序支持它
推荐阅读
- javascript - 将 jquery ajax 方法转换为 javascript
- r - 有没有办法在我的 Rblogdown 网站中插入 .wav 文件?
- javascript - 用 useEffect 钩子替换 react 钩子中的 setState 回调,用于复杂场景不起作用
- javascript - 创建一个新的放大网络客户端但使用相同的认知池?
- c# - 在同一个查询中使用 AsParallel() 和 AsSequential() 的影响?C#
- r - R函数比较csv文件并列出具有相同列名的行之间的变化
- android - Android Studio 是否支持 Kotlin 方法断点?
- geolocation - Google Geolocation API 总是返回相同的位置,不管 cellTower 是否指定
- python - tree = etree.fromstring(bytes(xml, encoding='utf-8')) TypeError: encoding without a string argument
- r - 在 R 中添加向量