从Windows上的大(2GB)XML文件中删除换行符和第一个字符

时间:2014-06-05 16:05:18

标签: powershell ssis

我有一个来自第三方的XML文件,它被分解为用Line Feeds分隔的非静态长度行。

还有一个奇怪的第一个字符需要从文件中删除。

我很确定上面的两个项目导致使用SSIS加载XML文件时出现问题。如果我手动删除它们(从较小的样本),XML文件通过SSIS加载。

此时我尝试使用SSIS和Powershell尝试修复文件。

SSIS导致奇怪地添加分隔符。

我使用Powershell的尝试在一小部分数据上更有成效,但我的实际文件将经常超过2GB并且我不断获得System.OutOfMemory异常。我增加了" maxmemorypershellmb"对于Powershell(并重新启动winrm)但它似乎没有阻止OutOfMemory错误的效果。

当前的Powershell尝试使用小样本文件:

-join ((Get-Content "C:\Code\input.xml") -replace '^\w$', '') | Set-Content -Path "C:\Code\output-nolinefeed.xml"

-join ((Get-Content "C:\Code\output-nolinefeed.xml").substring(1) | Set-Content -Path "C:\Code\output-nolinefeed-removefirstchar.xml"

如果上述两个命令都在示例文件上运行,则它将导入SSIS(XML Source - > Derived Column - > SQL Server Destination)。

在Notepad ++(下面)中查看它,看看它是如何在"小于"上显示出某种类型的黑色污迹。字符。另一个"小于"人物都显得正常。此外,霓虹绿也是我可以选择的某种类型的空间。

当我打开文件时,它是UTF-8。选择编码 - >隐藏到ASCII会导致空间和"小于"字符转换为单个问号。

enter image description here

将奇怪的第一个字符和换行放在一边的原因(假设两者都无法用SSIS处理),此时我需要一些能够优雅处理大文件的命令行编辑器。

1 个答案:

答案 0 :(得分:0)

我会将Foxe编辑器用于怪物XML文件:

http://www.firstobject.com/dn_editor.htm

就我使用它而言,它非常快速且似乎可靠。

显然它有一种基于C ++的脚本语言,但我还没有尝试过。