Excel空值导入mysql_excel导入sqlserver时,数据为null的处理方法分享

本文介绍在SQLServer 2008 R2中,处理Excel导入时数据变为null的解决方案。问题源于SQLServer自动判断数据类型,导致字符数据无法导入数值列。解决方法是确保Excel所有列设置为字符型,并使用IMEX=1设定导入为混合数据类型。同时,文中还提供了开启Ad Hoc Distributed Queries组件以执行导入脚本的步骤。
摘要由CSDN通过智能技术生成

摘要:

下文讲述sqlserver中导入excel时候,出现null的处理方法

实验环境:sqlserver 2008 R2

今天收到同事的一份客户资料,需要将excel导入至数据库中,但是当我导入进数据库时,发现身份证一栏中,有些导入为null,通过仔细比对发现

身份证号码中,存在字母的数据都导入进数据库了,其它全是数字的身份证号码都变为NULL了。

查阅了很多网上资料,发现sqlserver会对导入的数据做一个自动判断,并建立相应的数据类型,当sqlserver建立数值类型后,字符数据就无法导入数据表中,

此时则会导入null,问题就出在sqlserver数据类型上,知道问题后,此时我们只需保证excel中所有类型都为字符型就可以解决此类异常现象。

下文讲述处理此异常的终极方法,如下所示:

--将获取excel列中的数据类型设置为混合数据类型 IMEX =1,

---当遇到混合数据类型列时,强制使用nvarchar和ntext数据类型

---例: 将C盘中的test.xls文件导入至表tableTest中。

use [数据库名称]

go;

SELECT * INTO tableTest

FROM OpenDataSource

('Microsoft.Jet.OLEDB.4.0','Data Source="C:\test.xls";Extended properties="Excel 5.0;HDR=Yes;IMEX=1;"')...[Sheet1$]

---注意:

---[Sheet1$] 表示excel中第一页Sheet

当运行时出现 “消息 15281,级别 16,状态 1,第 1 行”时,此时我们需开启Ad Hoc Distributed Queries 组件,配置方法如下所示:

—开启方法

exec sp_configure ‘show advanced options’,1

reconfigure

exec sp_configure ‘Ad Hoc Distributed Queries’,1

reconfigure

go

/*导入excel脚本*/

—关闭方法

exec sp_configure ‘Ad Hoc Distributed Queries’,0

reconfigure

exec sp_configure ‘show advanced options’,0

reconfigure

go

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值