Excel导入SQL SERVER,数字和字符会被系统自动置为NULL的解决方法
在Excel中,我们时常会碰到这样的字段(最常见的就是电话号码),即有纯数字的(如没有带区号的电话号码),又有数字和其它字符混合 (如“区号-电
话号码”)的数据,在导入SQLServer过程中,会发现要么纯数字的数据导过去之后变成了NULL,要么就是数字和其它字符混合的数据导过去之后变成
了NULL。
为什么有些是纯数字的数据导过去之后变成了NULL,有些却是数字和其它字符混合的数据导过去之后变成了NULL,原来是在将Excel数据导入
SQLServer过程中,SQLServer会做出判断,是采用float型还是nvarchar型来接受数据,测试发现(没有科学依据),SQLServer采用哪一型取决于将要导入
的数据中本身具有哪一型的记录数比例多,如10笔数据,有4笔没有带区号的电话号码,6笔是带区号的电话号码,那么转到SQLServer就会选择
nvarchar型,结果就是4笔没有带区号的电话号码导过去之后全成了NULL,反之亦然。不管怎么样,我们最终都希望SQLServer是采用nvarchar来接受
数据,毕意我们要导入的数据中有数字和其它字符混合的数据,用float型来接受是不可能的,这样只要我们解决了将纯数字的数据转换成字符型并让
SQLServer接受就可以了。
我首先想到的就是将这个字段的所有数据在Excel中设置为文本格式,刚才说了本来就是希望导入SQLServer时成为字符型,但结果令人失望,不起
作用。
最终网上搜索到了答案:混合数据类型列的强制解析——IMEX=1
使用 IMEX=1 选参之后,只要取样数据里是混合数据类型的列,一律强制解析为 nvarchar/ntext 文本。当然,IMEX=1 对单一数据类型列的解析是不影
响的。
SELECT * INTO Table08
FROM OpenDataSource
('Microsoft.Jet.OLEDB.4.0','Data Source="E:/1.xls";Extended properties="Excel 5.0;HDR=Yes;IMEX=1;"')...[Sheet1$]
注:
1.这条语句是在SQLServer查询分析器中执行,并且要选择好数据库,否则会把要导入的数据往别的数据库中导了。
2.Table08是数据导入后在SQLServer中的表名,属于新建,所以请确认在导入数据前数据库中没有该表名,否则会提示已存在同一表名。
3.Data Source,不要连在一起写,中间有一空格。
4.E:/1.xls,为Excel所在的绝对路径和数据库名。
5.Excel 5.0,根据不同的Excel版本写5.0或8.0或其它。
6.IMEX=1,是转换成文本输入的意思,非常重要,如果没有,就跟你直接导入效果一样。
7.Sheet1是表名,千万别看到语句中有$就在表名后加上$,因为$是语句要加的,别画蛇添足。
-------------------------------------------------------------------------------------------
执行时发现
消息 15281,级别 16,状态 1,第 1 行
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
------开启
exec sp_configure 'show advanced options',1
reconfigureexec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
------关闭
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
转载于:https://blog.51cto.com/twins/1791587
Excel导入SQL SERVER,数字和字符会被系统自动置为NULL的解决方法相关推荐
- Excel导入sql server 2005错误0xc00470fe数据流任务产品级别对于组件源-Sheet1$(1)而言不足
Excel导入sql server 2005错误0xc00470fe数据流任务产品级别对于组件源-Sheet1$(1)而言不足 将Excel 导入sql server 2005数据库时, 提示: &q ...
- ASP.NET将EXCEL导入SQL SERVER数据库的代码
ASP.NET将EXCEL导入SQL SERVER数据库的代码 2007-11-13 10:36 在网上找到一个Asp.Net将Excel数据导入Sql Server数据库的的例子,是调用存储过程的, ...
- SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法此信息转载自BlueSky's Blog,www.heuupk.com,为尊重无价的知识请保留此版权信息。...
SQL Server 2005"备份集中的数据库备份与现有的数据库不同"解决方法 以前一直使用SQL Server2000,现在使用SQL Server2005,就在现在的项目中使 ...
- Excel 导入 Sql Server出错——“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”错误的解决...
一直在说截断,但是并未发现错误,也修改了映射的长度(证明并无卵用),查了下网上说的解决办法,说是改注册表,,修改方法如下: 如果是:Jet引擎. HKEY_LOCAL_MACHINE\SOFTWARE ...
- SQL Server安装登录过程中配置管理器无法创建管理单元的解决方法
SQL Server(为了方面码字,以下简称SS)安装结束之后常常需要的一步操作就是打开SS配置管理器对SS的网络配置TCP/IP协议进行启用 如图 但有时候在打开SS配置管理器时出现如图所示异常&q ...
- SQL server 2019 配置管理器,提示“MMC无法创建管理单元”的解决方法
Win10安装了SQLserver 2019版本后,打开SQL server 2019 配置管理器,提示"MMC无法创建管理单元". 根据他的提示,管理单元没有正确安装,莫名其妙. ...
- SQL Server Express LocalDB 问题两例实例已损坏、错误代码: 575解决方法
微软最新推出的 SQL Server Express LocalDB 是一种 SQL Server Express 的运行模式,特别适合用在开发环境使用,也内置在 Visual Studio 201 ...
- Excel导入SQL server数据库e日期格式转换失败
数据库提示: Conversion failed when converting date and/or time from character string. The statement has b ...
- 如何将数据从Excel文件导入SQL Server数据库
There are many ways to import data from an Excel file to a SQL Server database using: 有多种方法可以使用以下方法将 ...
最新文章
- php中并发读写文件冲突的解决方案(文件锁应用示例)
- java元婴期(18)----java进阶(spring(2)----DI(依赖注入)基于注解的IOC与DI配置properties)
- Web前端到底需要学什么?应该怎么学?
- 分析:“AI on Hadoop”有意义吗?
- java 画砖块,钢笔画入门:教你画砖块
- 聚类分析 - K-means - Python代码实现
- airtest远程连接手机_远程连接路由器图文教程,查询无线wifi连接手机dhcp设备名列表...
- Emmet 文档下载,所有快捷键总结
- UVA1368 UVALive3602 ZOJ3132 DNA Consensus String【贪心】
- 国士工作室 企业级Android软件开发和实战培训专家
- win7的附件计算机没了,win7系统附件工具不见了的解决方法
- 一款好的BI产品需要具备什么样的特点?
- 服务器搬迁方案_机房搬迁方案(样例)
- matlab 四维等值面图,一个4列数组怎样画出三维等值面图
- openharmony标准系统移植之适配hdc功能
- 一句话讲清种子轮、天使轮、ABC轮的区别
- 07-SparkStreaming
- nodejs无法下载puppeteer附带的chromium解决方案
- 令人截图上瘾的录屏神器FSCapture
- python中可选参数是什么意思_【IT专家】python 函数参数(必选参数、默认参数、可选参数、关键字参数)...
热门文章
- View是如何被添加到屏幕窗口上的
- Scroller解析
- postman关于Bearer token鉴权测试
- LeetCode Minimum Moves to Equal Array Elements II
- (笔记)电路设计(三)之0欧姆电阻、磁珠、电感的应用
- JS中常遇到的浏览器兼容问题和解决方法
- vegas pro 15解决导入的视频和音频有噪声问题,亲测可行
- C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁
- Entrust - Laravel 用户权限系统解决方案
- Python发送邮件smtplib.SMTP各报错问题的解决方法