【发布时间】:2014-06-10 13:44:34
【问题描述】:
我有一个来自第三方的 XML 文件,它被分解为用换行符分隔的非静态长度行。
还有一个奇怪的第一个字符需要从文件中删除。
我相当肯定以上两项会导致使用 SSIS 加载 XML 文件时出现问题。如果我手动删除它们(从较小的样本中),XML 文件可以通过 SSIS 加载。
此时我已尝试同时使用 SSIS 和 Powershell 来尝试修复文件。
SSIS 导致奇怪地添加了分隔符。
我在一小部分数据上使用 Powershell 的尝试更有成效,但我的实际文件通常会超过 2GB,而且我不断收到 System.OutOfMemory 异常。我增加了 Powershell 的“maxmemorypershellmb”(并重新启动了 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 源 -> 派生列 -> SQL Server 目标)。
在 Notepad++(下)中查看它,看看它是如何在“小于”字符上出现某种类型的黑色污迹的。其他“小于”字符都显示正常。此外,霓虹绿也是我可以选择的某种空间类型。
当我打开文件时,它是 UTF-8。选择 Encoding -> Covert to ASCII 会导致空格和“小于”字符转换为单个问号。
除了奇怪的第一个字符和换行符的原因(假设两者都不能用 SSIS 处理),此时我需要一些命令行编辑器来优雅地处理大文件。
【问题讨论】:
-
2GB 是 XML ssis 可以处理的最大大小,你会突破极限
-
嗨 Jayvee,你有这个的来源吗?在此链接上,作者加载了一个大于 2GB 的文件:ideaexcursion.com/2009/01/26/…
-
阅读这篇文章似乎没有限制,虽然这是指 xml 源组件,但我对 2gb+ xml 文件的(坏)经验与使用 xml 任务的验证有关。 2gb 仍然是 blob sql 服务器的限制,我会更准确地找出在什么情况下这会影响 SSIS。如果将其作为平面文件读取并且不打算将其加载到 sql server,则无论如何您都不会受到 2gb 限制的影响。你的新字符串是拆分成很多还是只是一个大字符串?
-
我确实打算将 XML 加载到表中。我已经开始在命令行上使用 PS 来去除换行符。
-
@Jayvee - 将其编辑为不需要 SSIS
标签: powershell ssis