powershell - 按组名将大 CSV 拆分为多个文件小 csv 并保持输出格式
问题描述
我是一名打印机管理员,我导出了许多打印报告。报告以大 CSV 格式导出。我设法按组名拆分了 CSV,内容还可以,但没有保持相同的输出格式。
所以有这个主文件,我按组拆分,像这样。
这是一个很好的报告,很好地导出:
如果您看到,它有一种格式,其中包含"
and ,
,但仅在需要的地方。
当我拆分 CSV 时,使用以下命令:
$fullpath = ".\Todos los dep_abr 24_mayo23_2018.csv"
$path = Split-Path $fullpath -Parent
$data = Import-Csv -Path $fullpath -Header "cGroupID", "cGroupIDBillable",
"cGroupName", "cGroupDescription", "cRowName", "cRowDescription",
"cRowID", "cDepartment", "cUnits", "cBWPages", "cColourPages",
"cAmount", "cAltCost", "cJobs", "cBillable", "cLocation",
"cBreakColumn"
foreach ($group in $data | Group cGroupName) {
$data | Where-Object {$_.cGroupName -eq $group.name} |
ConvertTo-csv -NoTypeInformation |
Out-File -Encoding utf8 ".\TODOS LOS DEP24_ABR_23_MAYO_18\DEP\$($group.name).csv"
}
文件的输出,是这样的,坏报告:
如果您知道一个命令,可以在按组拆分时保持主文件中的输出格式,请您帮助我。
我忘了提到我需要这个输出是这样的,因为在我得到报告后,我也在 powershell 中创建了一个带有表格的 html 报告。所以这就是为什么与原始输出相同的输出非常重要。非常感谢
双重“只需要在,需要的地方,就像在好的代码中一样。如果你看好的报告,有”但只在几个地方。
如果报告不是很好,html 表格将生成错误。
非常感谢。
更新:
我找到了一个脚本,它可以满足我的需要,保持输出在大文件上,但它是按大小而不是按组分割的,就像我自己的脚本中那样。我怎样才能根据我的需要修改它。
$src = ".\Informe 3 meses actividad detallada usuarios.csv"
$SplitPath = ".\Informe 3 meses actividad detallada usuarios - {0}.csv"
$inData = New-Object -TypeName System.IO.StreamReader -ArgumentList $src
$header = $inData.ReadLine()
$outData = New-Object -TypeName System.Text.StringBuilder
[void]$outData.Append($header)
$i = 0
while ( $line = $inData.ReadLine() ) {
if ( $outData.Length -gt 200MB ) {
$outData.ToString() | Out-File -FilePath ( $SplitPath -f $i ) -Encoding utf8
$outData = New-Object -TypeName System.Text.StringBuilder
[void]$outData.Append($header)
$i++
}
Write-Verbose "$currentFile, $line"
[void]$outData.Append("`r`n$($line)")
}
$outData.ToString() | Out-File -FilePath ( $SplitPath -f $i ) -Encoding utf8
这很好用,但它是按大小而不是按组划分的,并且输出是正确的。请帮忙。
解决方案
这个问题就解决了。
我结合到脚本。首先,我使用了拆分大文件的脚本,即问题中的大文件。
作为脚本,拆分良好,但按大小划分,在脚本结束后,我使用我的脚本取出组并且它起作用了。
我有很好的分组报告,并且没有“。
作为记录,我还检查了 html 格式,并且即使分隔符是 '"',此报告的 " 也不起作用。这就是为什么我需要准确地作为好的报告,输出。
我希望这里有人帮助我解决它,只需一个 powershell。但似乎没有人知道,一种在不格式化输出的情况下进行拆分的方法。好吧没问题。
谢谢大家的建议。你是一个伟大的团队。也感谢stackoverflow。
推荐阅读
- python-3.x - 使用 python3.4 的 xmlrpc.server 保持 tcp 连接打开
- swift - 重用 Storyboard ViewController - 父/子视图控制器
- sql - 选择返回最后一天的结果,星期一不返回星期五
- javascript - 如何循环嵌套 Json 访问所有对象的相同元素?
- siddhi - Siddhi - 使用 javascript 扩展来查询表
- set - 我收到一条错误消息:“D 已定义”但我无法解决
- javascript - 单击外部时关闭模式?
- java - 当我启动意图 ACTION_OPEN_DOCUMENT_TREE 时,它会自动打开最近的空文件夹?
- excel - 复制动态范围时对象工作表的方法范围失败
- android - 如何像下面的文本布局一样做