Sql 如何使用SSIS包创建避免数据库表中的空值?
我正在使用SQLServerBusinessIntelligenceDevelopmentStudio->IntegrationServiceProject 我的任务是使用Excel文件作为输入源。将excel工作表值插入DB[Destination source]表[SQL 2008] 我的Excel格式[我正在使用MS Office 2013]Sql 如何使用SSIS包创建避免数据库表中的空值?,sql,excel,ssis,business-intelligence,ssis-2012,Sql,Excel,Ssis,Business Intelligence,Ssis 2012,我正在使用SQLServerBusinessIntelligenceDevelopmentStudio->IntegrationServiceProject 我的任务是使用Excel文件作为输入源。将excel工作表值插入DB[Destination source]表[SQL 2008] 我的Excel格式[我正在使用MS Office 2013] ID|Tier|TierType|Age|Count ========================== 1 4
ID|Tier|TierType|Age|Count
==========================
1 4 18 0.652
2 4 EV 2.569
3 5 EG 25 1.035
. . . . .
. . . . .
. . . . .
800 4 EE 40 1.526
我的数据库表设计
表输出。
我能够成功地将excel工作表值插入DB表
我的问题是
在excel工作表中,前8条记录为空,从9条记录开始,下面的示例中显示的值为空:-
ID|Tier|TierType|Age|Count
==========================
1
2
3
4
5
6
7
8
9 4 EE 20 0.256
如果前8条记录为空,则int[Tier,Age]的剩余值也将显示null,DB表中的float[Count]。Varchar值将正确显示
表输出。
请告诉我这是默认问题,或者我在创建包时出错。我会在Excel源和OLE DB目标之间添加一个条件拆分组件。然后我会在那里给我们一个表达式来检测是否有空值。如果Teir为null就足够了,那么表达式将为
IsNull([Tier])
如果需要检查所有字段是否为空,那么可以使用&&和运算符
IsNull([Tier]) && IsNull([TierType]) && IsNull([Age]) && IsNull([Count])
无论您的业务逻辑是什么,都可以使用这种表达式过滤掉所有空行
@JodyT提到的另一种选择是,如果总是有N行为空,则可以修改连接管理器以跳过这些行。excel提供程序使用前8行来确定数据类型。您可以通过更改服务器上的注册表设置来更改该行为,但如果前8行始终为空,则您也可以在excel工作表上使用范围查询,而不是获取整个工作表: 从[Sheet1$range]中选择*
从[Sheet1$A2:B10]中选择*前8行是否始终为空?删除这些空行是否有效?@jodyT有时前8行的值为十进制,在Excel连接字符串中使用IMEX=1,工作正常。如果因此发生任何问题。。。
ID|Tier|TierType|Age|Count
==========================
1 NULL NULL NULL NULL
2 NULL NULL NULL NULL
3 NULL NULL NULL NULL
4 NULL NULL NULL NULL
5 NULL NULL NULL NULL
6 NULL NULL NULL NULL
7 NULL NULL NULL NULL
8 NULL NULL NULL NULL
9 NULL EE NULL NULL
.
.
.
800 NULL EC NULL NULL
IsNull([Tier])
IsNull([Tier]) && IsNull([TierType]) && IsNull([Age]) && IsNull([Count])