我有一个SSIS包,可以将数据从excel源导入SQL Server数据库。该文件有一个名为[Client Date Of Birth]
的列,通常是一个有效日期。我之所以说通常是因为数据是由我们客户的代理输入的,可以是02/24/2017
到Feb 17
甚至只是2017
的任何内容。我实际上需要将这些数据作为字符串输入,因为我们对这些日期进行了部分比较,因此以Feb 2017
形式出现的数据在技术上仍然可以。
问题是SSIS会自动确定此列是[DT_DATE]
类型。我尝试在源代码的高级编辑器的外部列部分中将数据类型更改为[DT_WSTR]
,但是当我单击确定时,SSIS会自动将其切换回[DT_DATE]
。如何让SSIS将此列作为字符串导入?
还应该注意,这是一个自动过程,所以我不能对excel文件本身进行任何更改,因为它每周都会被一个新文件替换。
答案 0 :(得分:0)
有很多方法可以实现这一目标:
第一种方式
[Client Date Of Birth]
标记为输入列[StrDOB]
[DT_STR]
在脚本中编写以下代码(我假设您需要日期格式yyyy-MM-dd HH:mm:ss
):
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
If Not Row.ClientDateOfBirth_IsNull Then
Row.strDOB = Row.ClientDateOfBirth.ToString("yyyy-MM-dd HH:mm:ss")
Else
Row.strDOB_IsNull = True
End If
End Sub
第二种方式
使用数据转换转换组件来实现此目的。只需按照此MSDN链接获取帮助: