我从事SSIS项目(Visual Studio 2012)
浏览器向我发送带有文章的excel文件。
信息从A2开始,直到G列。
然后我用
SELECT * FROM [ProduitsFamilles$A2:G]
我的问题是,我在这个文件中看到最后一行是16143(在空单元格下)
当我运行它时,它给出了16382行...然后在数据库中导致200行空压缩导致主键不能为空。
我认为这是因为在发送此文件之前,浏览器删除旧的除非行。
使用“条件分割”给出了很好的响应,但我想知道如果我可以直接打破空行,就像使用where子句...
答案 0 :(得分:1)
如果选择表而不是sql语句,SSIS将处理excel文件并自动停在空行。我相信你也可以在sql语句的Select子句中选择特定的列,而不是在From子句中定义你的范围。 SSIS通常假定有一个标题行,但您也可以指定它。
还有另一个可能的问题,即单元格在Excel中可以是活动的并且是空的而不是非活动的。要对此进行测试,请按ctrl和工作表中整列顶部的向下箭头。它应该停在最后一个包含数据的单元格中(在你的情况下是第16143行);如果它转到第16382行,你就会知道在导入之前需要处理一堆空但活动的行。
一般来说,使用带有SSIS的.csv文件比使用Excel文件容易得多,后者往往会出现这些类型的格式问题。