Excel与数据上传的XML

我试图将Excel(2003)file upload到SQL Server 2005中。

目前,我们正在使用SSIS将file upload到临时表(使用定义的模式),然后使用存储过程将数据移动到其预期的位置。 由于数据types不匹配,这会导致很多错误,并且即使excel文件包含值,有时也会将null值上载到表中。

现在我有以下选项

选项1 🙁build议在这里 )

将数据导入到types为varchar(255)的所有列的表中。 然后有一个SPvalidation每个列的数据types之前,将其移动到现场…这又是一个性能问题,使用IsNumeric,len,IsDate等?

选项2 🙁 XML / XSD)

从XL文件中生成XML,并在通过.NET或SSIS导入xml之前,根据预定义的XSD对其进行validation。 与选项1相比,这种方式会慢吗? 我也能够validation数据的长度吗? 我能否准确地报告哪个行和列导致错误?

从你对性能和其他方面的看法来看…特别是当出现错误时,我应该能够向用户报告哪个行和列导致了错误。

如果有更好的方法来处理这个…请让我知道…

谢谢

肯定与导入分开validation。 就个人而言,我将使用MS Access进行validation,因为它比Excel的数据存储问题的SQL Server更宽容,但如果需要,可以在SQL Server上使用所有varchar(255)字段的表。

导入是微不足道的,validation是一个项目本身。

数据可能以多种方式通过validationtesting,每种方式都需要自己的自定义代码。

我个人使用以前的方法,导入到一个“无模式的”预存储表,然后做数据清理来清理它,把好行放到一个“合适的”临时表中(模式匹配列的预期数据types)并将坏行移动到与预存表匹配的exception表中,并添加一列描述哪个validation失败(文本描述,或者,如果您确实想要对其进行规范化,则会生成一个包含相关错误表的错误代码) 。

虽然前面的两个答案是完全有效的,但我做的方式却有点不同,因此想要在这里提供方法…

第1步:我使用Excelmacros从Excel中创build了一个Xml文件。

第2步:在.NET(Windows应用程序)中使用预定义的XSD进行validation。 XSD包含所有模式信息,如数据types,甚至所需数据的长度,比例和精度。

这里还有一个好处,就是可以显示validation失败的精确行和列,以便用户可以轻松修改

步骤3:使用SSIS将XMLfile upload到一个表格,该表格确认给定的模式。

我到目前为止发现的缺点:

  1. 由于涉及更多的操作,上传过程稍慢。
  2. 更改即使是单个字段的数据types和长度也需要上传3个地方。 (模式中1个,SSIS中2个,上传表中3个)

这是我第一次尝试这个。 它工作到现在好,我能够实现我想要的。 可能还有其他的缺点,可能会随着时间的推移而出现。 我会尽量保持这个post的更新,当我面对一些。

感谢你的帮助。