SSIS和sql server 导入Excel数据到数据库中数据出现null

在使用SSIS从Excel导入数据到SQL Server时,遇到Number型数据显示为null的问题。原因是Excel根据前几行判断列类型导致所有数据被视为字符型。同样的问题也会发生在通过SQL Server代码直接导入Excel数据时。解决方案是在连接字符串中添加'IMEX=1',以确保所有数据都被读取为混合类型。

SSISsql server 导入Excel数据到数据库中数据出现null

客户提供的Excel如下所示。上方为表头,字符型,下方为对应数据。Number型。

Source

QTR ~ 03/2007

QTR ~ 06/2007

QTR ~ 09/2007

ST-CNT.UNIT

ST-CNT.UNIT

ST-CNT.UNIT

 

 

 

 

 

 

   

465,124,985

490,627,220

502,894,146

34,685,645

39,212,669

42,611,936

14,976,035

15,944,699

16,605,866

6,641,850

7,173,852

7,292,634

但是通过SSISExcel组件,把源数据抽取进程序中是,在刚刚加载数据进来的预览阶段,便出现了number型数据为null的情况。预览如下:

 

 

 

 

 

 

QTR ~ 03/2007

QTR ~ 06/2007

QTR ~ 09/2007

ST-CNT.UNIT

ST-CNT.UNIT

ST-CNT.UNIT

 

 

 

 

 

 

 

 

 

null

null

null

null

null

null

null

null

null

null

null

null

发现Excel在导入数据的时候,会通过前面几行对整个的字段类型,对整个列有个基本的判断,所以默认下方数据都为字符而导致出错。

         同样问题依然会出现在,通过代码直接将Excel数据导入到sql server数据库中的情况。通过sql server导入Excel数据的代码如下。

 

exec sp_configure 'show advanced options',1

reconfigure

exec sp_configure 'Ad Hoc Distributed Queries',1

reconfigure

 

SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',

'Data Source=C:/Users/mc/Desktop/CHPA 2007-2010 Quarter.xls;Extended Properties="EXCEL 8.0;HDR=YES "')...[Source$]

 

exec sp_configure 'Ad Hoc Distributed Queries',0

reconfigure

exec sp_configure 'show advanced options',0

reconfigure

 

在通过代码导入Excel数据时,需要注意的是要先配置sp_configure。否则直接执行代码会报错(SQL Server 阻止了对组件'Ad Hoc Distributed Queries' STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用sp_configure 启用'Ad Hoc Distributed Queries'。有关启用'Ad Hoc Distributed Queries' 的详细信息,请参阅SQL Server 联机丛书中的"外围应用配置器"

)。

 

解决方案:

在连接字符串中添加:

Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1";

IMEX=1 这个就是要添加的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值