在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的解决方法相关推荐

  1. Excel导入sql server 2005错误0xc00470fe数据流任务产品级别对于组件源-Sheet1$(1)而言不足

    Excel导入sql server 2005错误0xc00470fe数据流任务产品级别对于组件源-Sheet1$(1)而言不足 将Excel 导入sql server 2005数据库时, 提示: &q ...

  2. ASP.NET将EXCEL导入SQL SERVER数据库的代码

    ASP.NET将EXCEL导入SQL SERVER数据库的代码 2007-11-13 10:36 在网上找到一个Asp.Net将Excel数据导入Sql Server数据库的的例子,是调用存储过程的, ...

  3. SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法此信息转载自BlueSky's Blog,www.heuupk.com,为尊重无价的知识请保留此版权信息。...

    SQL Server 2005"备份集中的数据库备份与现有的数据库不同"解决方法 以前一直使用SQL Server2000,现在使用SQL Server2005,就在现在的项目中使 ...

  4. Excel 导入 Sql Server出错——“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”错误的解决...

    一直在说截断,但是并未发现错误,也修改了映射的长度(证明并无卵用),查了下网上说的解决办法,说是改注册表,,修改方法如下: 如果是:Jet引擎. HKEY_LOCAL_MACHINE\SOFTWARE ...

  5. SQL Server安装登录过程中配置管理器无法创建管理单元的解决方法

    SQL Server(为了方面码字,以下简称SS)安装结束之后常常需要的一步操作就是打开SS配置管理器对SS的网络配置TCP/IP协议进行启用 如图 但有时候在打开SS配置管理器时出现如图所示异常&q ...

  6. SQL server 2019 配置管理器,提示“MMC无法创建管理单元”的解决方法

    Win10安装了SQLserver 2019版本后,打开SQL server 2019 配置管理器,提示"MMC无法创建管理单元". 根据他的提示,管理单元没有正确安装,莫名其妙. ...

  7. SQL Server Express LocalDB 问题两例实例已损坏、错误代码: 575解决方法

    微软最新推出的 SQL Server  Express LocalDB 是一种 SQL Server Express 的运行模式,特别适合用在开发环境使用,也内置在 Visual Studio 201 ...

  8. Excel导入SQL server数据库e日期格式转换失败

    数据库提示: Conversion failed when converting date and/or time from character string. The statement has b ...

  9. 如何将数据从Excel文件导入SQL Server数据库

    There are many ways to import data from an Excel file to a SQL Server database using: 有多种方法可以使用以下方法将 ...

最新文章

  1. php中并发读写文件冲突的解决方案(文件锁应用示例)
  2. java元婴期(18)----java进阶(spring(2)----DI(依赖注入)基于注解的IOC与DI配置properties)
  3. Web前端到底需要学什么?应该怎么学?
  4. 分析:“AI on Hadoop”有意义吗?
  5. java 画砖块,钢笔画入门:教你画砖块
  6. 聚类分析 - K-means - Python代码实现
  7. airtest远程连接手机_远程连接路由器图文教程,查询无线wifi连接手机dhcp设备名列表...
  8. Emmet 文档下载,所有快捷键总结
  9. UVA1368 UVALive3602 ZOJ3132 DNA Consensus String【贪心】
  10. 国士工作室 企业级Android软件开发和实战培训专家
  11. win7的附件计算机没了,win7系统附件工具不见了的解决方法
  12. 一款好的BI产品需要具备什么样的特点?
  13. 服务器搬迁方案_机房搬迁方案(样例)
  14. matlab 四维等值面图,一个4列数组怎样画出三维等值面图
  15. openharmony标准系统移植之适配hdc功能
  16. 一句话讲清种子轮、天使轮、ABC轮的区别
  17. 07-SparkStreaming
  18. nodejs无法下载puppeteer附带的chromium解决方案
  19. 令人截图上瘾的录屏神器FSCapture
  20. python中可选参数是什么意思_【IT专家】python 函数参数(必选参数、默认参数、可选参数、关键字参数)...

热门文章

  1. View是如何被添加到屏幕窗口上的
  2. Scroller解析
  3. postman关于Bearer token鉴权测试
  4. LeetCode Minimum Moves to Equal Array Elements II
  5. (笔记)电路设计(三)之0欧姆电阻、磁珠、电感的应用
  6. JS中常遇到的浏览器兼容问题和解决方法
  7. vegas pro 15解决导入的视频和音频有噪声问题,亲测可行
  8. C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁
  9. Entrust - Laravel 用户权限系统解决方案
  10. Python发送邮件smtplib.SMTP各报错问题的解决方法