【问题标题】:How to remove double quotes from export-csv in powershell如何在powershell中从export-csv中删除双引号
【发布时间】:2018-06-22 06:33:35
【问题描述】:

我有以下代码:

$files = Get-ChildItem 'C:\SitePlotsA\' -filter '*.csv'
$currentDate = get-date


for ($i=0; $i -lt $files.Count; $i++) {
    $outfile = $files[$i].FullName + "out" 
    $csv = Import-Csv $files[$i].FullName -Delimiter "|"
    $newcsv = @()
    foreach ( $row in $csv ) {
        $row | Add-Member -MemberType NoteProperty -Name "TimeStamp" -Value $currentDate -Force
        $newcsv += $row
    }


    $newcsv | Export-Csv $files[$i].FullName -NoTypeInformation -Delimiter "|"

}

它的作用是导入给定目录中的所有 csv 文件,并添加一个包含当前日期时间的新列。它还将我的所有数据封装在双引号“”中。无论如何让它在没有双引号的情况下输出它?我到处找。

我希望它通过查看 CSV 目录而不是指向单个 csv 来保持原样。

谢谢!

【问题讨论】:

  • 为什么要去掉双引号?它是 CSV 文件格式的一部分。
  • 我将数据批量插入到 SQL 表中。我正在使用 |作为分隔符,当我在插入此列后运行它时,它看起来像“Bob Smith”
  • 如果您的 CSV 看起来像 "Jim ""The Tank"" Brown",27,"Australia" 怎么办?
  • 如何将数据添加到 SQL 表中?我怀疑那里有些错误,因为 CSV 是一种标准数据格式,双引号不是值的一部分,它们用于标记每个值的开始和结束......即。 CSV 阅读器会将"|" 解释为拆分,而不仅仅是管道字符。如果您没有正确解释该数据,而是在某些定制的数据解释中手动将竖线字符指定为您的分隔符,那可能是问题所在?

标签: powershell csv


【解决方案1】:

假设您需要以未正确提取 CSV 数据格式的方式手动解释此数据,您应该能够在将数据提供给 SQL 表时通过执行每行都有一个replace(作为字符串)。

您需要将"|" 替换为|,然后删除每一端的"

例如:

$data = Get-Content $csvfile
$data | foreach {$_.replace('"|"','|').TrimStart('"').TrimEnd('"')}

【讨论】:

    猜你喜欢
    • 2015-07-26
    • 2017-02-13
    • 2022-01-20
    • 2021-11-20
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多