【问题标题】:how to import variable record length csv file powershell如何导入可变记录长度的csv文件powershell
【发布时间】:2015-10-18 04:44:14
【问题描述】:

我有一个文本文件是 ';'分开。没有标题。和“列”不一样。看起来像这样

"TH01";"201";"1";"KA";"1";"1";"14.07.2015";
"TH02";"000800";"1";"Verkkomyynti";"Verkkomyynti";"Rudus Oy";"PL 49";"00441";"HELSINKI";"";"";
"TH03";"000800";"XXX";"RUSKATIE 25";"10104307 JORMA KOSKINEN";"";"";"";"";"";"";"";"36KM";

我尝试使用

导入此文件
$filecvs = import-Csv -Path "C:\test.txt" -Delimiter ';' 
foreach($row in $filecvs)
{  
   $field1 = $row.field1  
   $field2 = $row.field2   
   Echo "$field1, $field2" 
}

我得到了一个错误 import-Csv : 成员“1”已经存在。

At line:1 char:12
+ $filecvs = import-Csv -Path "C:\test.txt...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Import-Csv], ExtendedTypeSystemException
    + FullyQualifiedErrorId : AlreadyPresentPSMemberInfoInternalCollectionAdd,Microsoft.PowerShell.Commands.ImportCsvCommand

我的目标是遍历文件并获取某些字段的值并将它们相加。如果我不能使用 import-csv 那么最好的解决方法是什么?

提前致谢。

【问题讨论】:

  • 在您的示例中,每行似乎都有不同数量的字段。例如,第一行有 8 个字段,第二行有 12 个字段。第 1 行中的字段是否与第 2 行显示的前 8 个字段相同?第 2 行中的字段是否与第 3 行中的前 12 个(共 14 个)相同?我们可以简单地在这些行的末尾添加空白字段并让所有内容都正确排列吗?

标签: csv powershell


【解决方案1】:

Import-CSV 期望第一行是标题行,定义字段的名称。它抛出错误“成员'1'已经存在”,因为您在第一行中有两次值'1',并且它不能将两个属性(字段)命名为相同的名称。

您可以将 -Header 参数添加到 Import-Csv 以使其将 csv 文件中的所有数据解析为数据。

例子:

$filecvs = import-Csv -Path "C:\test.txt" -Delimiter ';' -Header Field1,Field2,Field3,Field4,Field5...

【讨论】:

  • 谢谢 jbsmith。非常有帮助。赞赏:)
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 2022-06-22
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多