我正在从SQL Server 2008R2升级到2017,并使用SSIS进行了相同的升级。大量平面文件导入正在拾取行中的列中嵌入了回车符/换行符({CR}{LF}
)的文件。
2008R2平面文件连接管理器忽略行中的嵌入式{CR}{LF}
,但是2017年平面文件连接管理器将每个{CR}{LF}
视为新行。升级后的连接管理器或全新创建的连接管理器都是相同的。
在两个版本中,连接管理器都具有相同的规格:
General Tab
Locale: English (United States)
Unicode: No
Code page: 1252 (ANSI-Latin I)
Format: Delimited
Text qualifier: <none>
Header row delimiter: {CR}{LF}
Header rows to skip: 0
Column names in the first data row: Check
Columns Tab
Row delimiter: {CR}{LF}
Column delimiter: Vertical Bar{|}
我正在测试的不是特别复杂的文本文件:
row_id|row_data|empty_column|created_by|one_more_field{CR}{LF}
1|random test data||ebrandt|{CR}{LF}
2|Data field with a carriage return{CR}{LF}
and a line feed embedded in it.||ebrandt|
我粘贴了行终止符,只是为了表明它们在那里。
在Columns
标签上,BIDS 2008R2中的“预览”窗口显示两行:
但是在2017年,完全相同的文件分为三行:
此项目中没有带宽可以重新处理所有文件导入。
在可以更改的版本之间是否有更改的设置?还是我还缺少另一个技巧?
编辑:为响应已删除的评论,如果可以,我将指定一个文本限定符,但获取的文件没有任何内容。
答案 0 :(得分:3)
在平面文件连接管理器中,您需要将AlwaysCheckForRowDelimiters
属性设置为False
。
您的文件将像以前一样被解析。
这是2012年所做的一项更改,将行为更改为the following。
默认情况下,平面文件连接管理器始终检查一行 未加引号的数据中的定界符,并在行定界符时开始新行 被发现。这使连接管理器可以正确解析文件 缺少列字段的行。
有关更多信息,请参见this link。