我正在开发一个包,将数据从文本文件加载到SQL服务器上的表中。
文本文件具有以下格式的数据
我在这里包括平面文件连接管理器 -
我创建了一个测试表
执行包并将数据移动到表上。
然后,编辑其中一列以包含更多字符(在第二列中包含s)
而不是包错误输出..成功运行并将额外的字符移动到下一列。
有人可以帮帮我吗?
这是正常的,您将平面文件源读取为固定宽度列(固定宽度或右边是Ragged),具有以下规格。
“Ragged Right”,与“Fixed Width”完全相同,只是它允许您选择在每行数据的末尾插入换行符(或CRLF等)。
(您可以检查平面文件连接管理器以查看规范)
初始状态
数据:
0001aijn fkds jmcl wuj
规格和结果:
Col001: From 0 -> 3 '0001'
Col002: From 4 -> 7 'aijn'
Col003: From 8 -> 11 ' fkd'
Col004: From 12 -> 13 's '
Col005: From 14 -> 18 'jmcl '
Col006: From 19 -> end 'wuj'
第二国
因此,当您添加S
字符时,数据如下所示:
0001aijns fkds jmcl wuj
规格和结果:
Col001: From 0 -> 3 '0001'
Col002: From 4 -> 7 'aijn'
Col003: From 8 -> 11 's fk'
Col004: From 12 -> 13 'ds'
Col005: From 14 -> 18 ' jmcl'
Col006: From 19 -> end ' wuj'
有关更多信息:
Delimited Format
DT_WSTR
,将长度更改为4000
LEN([Column0]) == 22
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Throw New Exception("Length constraint violated")
End Sub
OLEDB Destination
我认为两种情况的行为没有任何区别。两次都是从输入文件中读取4个字符并将它们放在第1列中,将接下来的4个字符读入第2列,将接下来的4个字符读入第3列,然后将2个字符放入第4列,将5个字符读入第5列,最后4个字符(如果有那么多)留在第6列。注意它将空格计为字符,所以在第一次运行中它包括第3列条目开头的aijn
和fkds
之间的空格,而在第二次运行额外的s
现在是第3列中的第一个字符,空格成为第二个字符。