【问题标题】:Merge two csv files using PowerShell (header file and data file)使用 PowerShell 合并两个 csv 文件(头文件和数据文件)
【发布时间】:2019-03-07 15:12:56
【问题描述】:

CSV 文件 1(头文件):

标题 1、标题 2、标题 3 ...

CSV 文件 2(数据文件):

数据记录 1、数据记录 2、数据记录 3 ...


文件 1 仅包含标题,而文件 2 包含与文件 1 中的标题相对应的数据。 是否可以通过 PowerShell 脚本将文件 2 中的数据附加到文件 1 中的标头,因此文件 2(或新文件)现在看起来像:

输出 CSV 文件

标题 1、标题 2、标题 3 ...

数据记录 1、数据记录 2、数据记录 3 ...


对问题格式表示歉意,首先在此处发布。非常感谢您的帮助,在此先感谢您!

【问题讨论】:

  • 到目前为止你尝试过什么?向我们展示您的代码,我们很乐意为您提供帮助,但我们不会从头开始为您编写任何内容。
  • Import-CSV cmdlet 有一个-Header 参数。您可以使用Get-Content 读取第一个文件,并在第二个文件上使用Import-CSV 时将其用作标头参数的值。

标签: powershell csv


【解决方案1】:
$Headers = (Get-Content csv1.csv).Split(',')
$outputCSV = Import-CSV csv2.csv -Header $Headers
$outputCSV | Export-CSV output.csv -NoTypeInformation

$Headers 变量存储来自csv1.csv 文件(仅包含标题的文件)中的逗号分隔值。

Split() 方法在每个逗号处拆分 csv1.csv 的内容,删除逗号,并创建这些拆分的数组。

Trim() 可以添加在Split() 方法之后,用于删除逗号周围的多余空格。

$outputCSV 正在将 csv2.csv 导入为 csv 文件,并从 $Headers 数组中添加标题行。

最后一个命令是将$outputCSV 的内容导出到一个名为output.csv 的新csv 文件中。

Import-CSVExport-CSV 命令中,我提供的文件名分配给-Path 参数。如有必要,您可以完全限定这些路径,即它们不必只有文件名。

【讨论】:

  • 这就像一个魅力!我只需要删除 Trim() 因为 CSV 文件 2 在数据中包含相当多的空格(不幸的是它产生的第 3 方)。一旦我删除了 Trim() - 它完美地合并了数据。
  • 感谢您的更新。我从答案中删除了 Trim() 方法,并将其保留为注释。
猜你喜欢
  • 2013-01-11
  • 2015-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 2020-11-22
  • 1970-01-01
相关资源
最近更新 更多