标签归档:excel导入

excel导入sqlserver时,数据为null的处理方法分享


摘要:
下文讲述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

excel 导入至sqlserver中部分数据为NULL的处理方法分享


摘要:
下文讲述excel中数值类型转换方法分享,如下所示:
实验环境:excel 2007



此问题产生的背景:

近期在做系统初始化时,将excel导入至数据库中,发现有一列的值”有些为 NULL 有些又有值”。
通过仔细分析excel列中的数据,发现 这一列有些数据为数值 有些又为文本,当数据插入至sqlserver时,
当数据类型不一致时,则会采用NULL替换已存在的值。
———————–处理方法———————
将列中的所有值转换为文本

第一步:

打开excel,新建一列,采用excel公式text,将指定列的字符全部转换为文本
text函数用法

text函数用法



第二步:

选中转换后的列,复制,选择性粘贴为”数值”


第三步:

删除原列


第四步:

重新导入excel至sqlserver中,发现数据列中的null消失