sql-server – 当设置为CRLF时,SSIS读取LF作为终结符
发布时间:2020-12-12 07:04:09 所属栏目:MsSql教程 来源:网络整理
导读:使用SSIS 2012.我的平面文件连接管理器我有一个分隔文件,其中行分隔符设置为CRLF,但是当它处理文件时,我有一个文本列,其中包含一个LF.这导致它读取它作为行终止符导致它失败.有任何想法吗? 解决方法 在回答之前,我不认为该列只包含LF,因为如果行分隔符是CRLF
使用SSIS 2012.我的平面文件连接管理器我有一个分隔文件,其中行分隔符设置为CRLF,但是当它处理文件时,我有一个文本列,其中包含一个LF.这导致它读取它作为行终止符导致它失败.有任何想法吗?
解决方法在回答之前,我不认为该列只包含LF,因为如果行分隔符是CRLF,则不会将其视为分隔符.所以它可能是CRLF,但我会给出两种情况的解决方案(CRLF或LF)解 您可以通过以下步骤解决此问题: >首先在Flat File连接管理器中添加一列(DT_STR类型和长度4000),因此您将每行视为一列. 简单测试 我会考虑一个包含以下内容的平面文件 ID;name;DOB;Notes;ClassID{CRLF} 1;John;2001-01-01;;1{CRLF} 2;Moh;2002-01-01;Very cool{LF} Genius;2{CRLF} 3;Ali;2000-01-01;Calm;2{CRLF} >首先,我将添加一个平面文件连接管理器,其中包含以下选项: >行分隔符= {CRLF} >在DataFlow任务中,我将添加一个平面文件源,2个脚本组件,OLEDB目标 >在第一个脚本组件中,我将编写一个脚本,将每行存储在内存变量中,并在行完成且另一行存在时将其分配给输出行. Dim strLine As String = String.Empty Dim strDelimiter As String = ";" Public Sub EmptyMemoryVariables() strLine = String.Empty End Sub Public Sub AssignMemoryVariablesToOutput() With Output0Buffer .AddRow() .NewRow = strLine End With End Sub Public Function AreVariablesEmpty() As Boolean If strLine = "" Then Return True Else Return False End If End Function Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) Dim strColumns As String() = Row.Column0.Split(CChar(strDelimiter)) If strColumns.Length = 5 Then If Not AreVariablesEmpty() Then AssignMemoryVariablesToOutput() EmptyMemoryVariables() End If strLine = Row.Column0 AssignMemoryVariablesToOutput() EmptyMemoryVariables() Else If strLine.Split(CChar(strDelimiter)).Length = 5 Then AssignMemoryVariablesToOutput() EmptyMemoryVariables() End If strLine &= Row.Column0 End If >在第二个脚本组件中,我将每行拆分为列 Dim strDelimiter As String = ";" Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) Dim strColumns As String() = Row.NewRow.Split(CChar(strDelimiter)) Row.ID = strColumns(0) Row.NAME = strColumns(1) Row.DOB = strColumns(2) Row.NOTES = strColumns(3) Row.CLASSID = strColumns(4) End Sub 重要说明:提供的代码不是最佳的,它可能需要更多的验证,或者可以更简单和更好,但我试图给你的方式,你可以想到解决这个问题 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SQLServer 2008的数据库镜像实施笔记--转
- SqlServer索引的原理与应用
- 如何调优SQL Server查询
- sql-server – SQL Server 2008 – sp_refreshview在一些视
- SQL SERVER一个用来统计相同姓名人数的SQl语句
- sql-server – SQL Server的READ COMMITTED SNAPSHOT vs SN
- sql – 在oracle中插入包含引号的字符串
- sql-server – 如何快速识别SQL Server中最近修改过的存储过
- 当变量包含单引号时,SQL动态查询字符串中断
- sql-server-2005 – 如何在整个MS SQL 2005 DB中搜索值?