【发布时间】:2020-12-11 12:51:14
【问题描述】:
我有一个包含多条记录的 XML 文件。我有一个实现的过程,该过程获取该文件并将其插入到表中。 问题是描述列中有一个几乎 20000 个字符长的 xml 记录。 我想做的是有一个可以打开文件的过程,在 和 字符串之间查找长度超过 255 个字符的字符串,并将字符串的左侧设为 255。最后我保存了所做的更改后的文件。
示例:
我在文件中有:
<Row>
<Attributes>
<Column>
<Name>Column1</Name>
<Value>111111</Value>
</Column>
<Column>
<Name>Column2</Name>
<Value>AAAAAA</Value>
</Column>
<Column>
<Name>Column3</Name>
<Value>XXXX</Value>
</Column>
<Column>
<Name>Column4</Name>
<Value>XXXXXX</Value>
</Column>
<Column>
<Name>Column5</Name>
<Value>FGGGGG</Value>
</Column>
<Column>
<Name>Description</Name>
<Value>PING10,10,10,10TESTEREMOTE,PING20,20,20,20TESTEREMOTE,PING30,30,30,30TESTEREMOTEPING10,10,10,10TESTEREMOTE,PING20,20,20,20TESTEREMOTE,PINGPING10,10,10,10TESTEREMOTE,PING20,20,20,20TESTEREMOTE,PING30,30,30,30TESTEREMOTE30,30,30,30TESTEREMOTE</Value>
</Column>
<Column>
<Name>COLUMN6</Name>
<Value>XX</Value>
</Column>
</Attributes>
</Row>
我想要:
在
Column1111111Column2AAAAAA列3名称>XXXX值>列>列4名称>XXXXXX值>列>列5FGGGGG值>列>描述名称>PING 10,10,10,10 TESTE远程,PING 20,20,20,20 测试远程,PING 30,30,30,30 测试远程 PING 10,10,10,10 测试远程,PING 20,20,20,20 测试远程,PING PING 10,10 ,10,10 TESTE REMOTE, PING 20,20,20,20 TESTE REMOTE, PING 30,30,30,30 TESTE REMOTECOLUMN6XX值>列>属性>行>
谢谢
【问题讨论】:
-
我猜你可以在派生列转换中简单地做到这一点。使用
LEFT列的Value -
但这必须在文件中完成,因为如果我制作一个提取平面文件,它会出错,因为只允许包含 8000 个字符的列,而在我的情况下它有 22000 个。
-
你的意思是你正在使用
Flat file source?如果是这样,你可以直接使用XML source,你没有这样的限制 -
你的标签中真的有那个空格吗?
-
没有空格。我把它拿来拿标签。
标签: ssis script-task