在通过SSIS上传之前validation数据

我有一个SSIS包,将数据从Excelfile upload到Sql Server 2005表中。

excel文件将有不同的数据线,从20k到30k线。

当所有数据都正确时,上传工作正常。 但是,即使是单排有小问题也显然失败。 像强制值的例子呈现null,不可转换的值(数据types不匹配)等

我想在上传之前validationexcel文件,并想告诉用户哪一行和那列有错误…

任何想法如何做到这一点,而不消耗太多的时间和资源。

谢谢

加载到没有任何强制值的临时表中可能是最容易的,并在将它附加到主表之前检查它。

编辑重新评论

Dim cn As ADODB.Connection Dim rs As ADODB.Recordset ''This is not necessarily the best way to get the workbook name ''that you need strFile = Workbooks(1).FullName ''Note that if HDR=No, F1,F2 etc are used for column names, ''if HDR=Yes, the names in the first row of the range ''can be used. ''This is the Jet 4 connection string, you can get more ''here : http://www.connectionstrings.com/excel strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _ & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";" Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") cn.Open strCon ''Note that HDR=Yes ''Pick one: strSQL = "SELECT Frst, Secnd FROM TheRange WHERE SomeField Is Null" ''Named range strSQL = "SELECT Frst, Secnd FROM [Sheet1$C3:C67] WHERE Val(Secnd)=0" ''Range strSQL = "SELECT Frst, Secnd FROM [Sheet1$] WHERE First<Date()" ''Sheet rs.Open strSQL, cn Sheets("Sheet2").Cells(2, 1).CopyFromRecordset rs 

我最近一直在SSIS里做了一些类似的软件包,唯一能解决这个问题的方法就是拥有类似于Remou的build议。

这个表是非常通用的,所有的字段都是NULLVARCHAR(255) 。 然后我有一个validation存储过程,在将数据移动到“活动”状态之前,检查诸如键入,数据的存在等事情。 虽然它可能不是最优雅的解决scheme,但是它使您能够对数据检查方式进行很多控制,也意味着您不必担心首先将文件转换为.CSV。