Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用SSIS包创建避免数据库表中的空值?_Sql_Excel_Ssis_Business Intelligence_Ssis 2012 - Fatal编程技术网

Sql 如何使用SSIS包创建避免数据库表中的空值?

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

我正在使用SQLServerBusinessIntelligenceDevelopmentStudio->IntegrationServiceProject

我的任务是使用Excel文件作为输入源。将excel工作表值插入DB[Destination source]表[SQL 2008]

我的Excel格式[我正在使用MS Office 2013]

 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])