`

SQL Server导入excel数据之Bug!

阅读更多
  最近帮朋友把他整理的excel数据导入到Sql Server中,失败,报错如下:作为源列4(“产品说明”)的数据对于所指定的缓冲区来讲太大。
  我的excel文件中有一列叫“产品说明”,就是一些文字。Sql server处理导excel数据流程是这样的,它会先创建目标表,再把excel数据写入缓冲区,然后再把缓冲区数据写入目标表。问题就在创建目标表和写入缓冲区,sql server会根据现在的excel中的数据格式来写入缓冲区和创建目标表。比如excel中有一列为编号,里面是数字,sqlserver就会在目标表里建一列叫“编号”,为float类型.
    而对于我的excel文件中的"产品说明"这一列,是文字,那sql server如何建立目标列或缓冲区呢?它怎么知道该把目标建立成varchar还是text呢?经过测试,发现sql server是这样做的,他会取excel文件中的前8行(2的三次方),然后算这8行里“产品说明”的最大长度,如果这8行里最长的 > 255,则目标列和缓冲区就会建立成ntext类型,否则就建立成nvarchar类型。这样,问题就来了!假设我的excel文件前8行“产品说明”中都 < 255,则目标和缓冲区就被建立为varchar(255)类型了(这里说明一下,你可以修改目标表的字段类型,但缓冲区长度或类型是无法修改的)。而如果我的第10行里“产品说明”的长度超过了255,则sql server往缓冲区里写的时候,自然就发生了如上的错误:数据对于指定的缓冲区来讲太大。
    这样,我们导数据当然就失败了!这个也许不能算bug,因为只是实现得不好(取某列前8行的最大长度并不能真正代表所有行,我想microsoft的工程师为了简单或者提高性能才这样做的);也许算是bug,因为不知情的用户导数据失败了。而且不知道为何而失败的!
    公理自在人心,让大家或那些工程师们去评判吧!
    
分享到:
评论

相关推荐

    excel数据直接导入oracle或sql server

    可以直接把excel/csv文件导入oracle或sql server数据库中 可对导入的excel内容进行筛选后再导入 可选择需要导入表的栏位 可批量导入文件夹的所有excel文件或者一个excel文件中的所有sheet 也可以导入一个文件内单个...

    EXCL导入SQLserver数据库

    然而,当数据量达到一定规模时,Excel可能就无法满足高效管理和处理的需求,这时我们就需要将数据导入到更强大的数据库系统中,比如SQL Server。本文将详细探讨如何将Excel数据批量导入到SQL Server数据库,并提供...

    (版本1.1)一个delphi编写的数据转换工具,支持oracle、sqlserver、dbf、Excel和Csv数据之间的互转

    例如,可能需要将一个Excel工作簿的数据导入到Oracle数据库,或者从SQL Server数据库导出数据到CSV文件以便进一步分析。 总结而言,DataCvrt是Delphi开发的一款多平台数据转换工具,具备转换Oracle、SQL Server、...

    SQL数据库导入向导(最终版)

    《SQL数据库导入向导(最终版)》是针对SQL Server 2000数据库系统设计的一款实用工具,它主要用于帮助用户高效、便捷地完成数据的导入操作。此工具的开发环境为Visual Studio 2003,这是一款由微软推出的强大开发平台...

    Excel2DB-Excel导入数据共通程序

    终于在一个"寂寞难耐"的周末,完成了一个Excel导入数据库(支持Sql Server 2000,2005; Access,Oracle未测试)的共通程序(可配置和验证).闲暇时间测试了一下,功能和效率(1000条3-4秒)方面还不错. 此DLL在做导入程序至少...

    C#学生成绩管理系统(含sql数据库和Excep导入源码)

    开发者通过读取Excel文件,解析其中的数据,然后通过数据访问层将这些信息插入到数据库中。此功能对大量成绩录入的场景尤为实用,极大地提高了工作效率。 4. **C#编程技术** 在C#编程中,ADO.NET库是与数据库交互...

    DataPie数据库导入导出工具 v3.4源码2012810

    支持sql server导入导出、存储、过程调用 V2.0,2012年2月15日 主要变化:新增ACCESS2007支持,重写大部分代码,重命名为DataPie V2.01,2012年3月1日 新增数据库服务的开启与关闭 V2.04,2012年3月12日 新增...

    TD操作手册

    - **编辑EXCEL数据**:准备要导入的数据。 - **TD导入映射设置**:定义数据字段与TD字段之间的映射关系。 #### 11. TD数据迁移 - **移植前的备份工作**:备份重要数据以防万一。 - **数据库迁移**:通过数据库复制...

    SQL查询分析器修正分离版SQL查询分析器修正分离版

    9. **导出和导入数据**:可以将查询结果导出为各种格式(如CSV、Excel),或将数据从一个数据库导入到另一个数据库。 10. **历史记录保存**:保存用户的查询历史,便于日后参考或复用。 修正分离版可能意味着这个...

    MS SOL辅助工具

    此外,它还支持数据导入和导出,可以将数据从各种格式(如CSV、Excel、XML等)导入到SQL Server,或者将数据库中的数据导出到其他格式。 3. **查询构建与执行**: 用户可以利用内置的查询构建器来创建复杂的SQL...

    Penguins DbTools v16.11.27 官方正式版.zip

    软件支持如ORACLE,MYSQL,SQLSERVER,POSTGRE,DB2,sybase等目前几乎所有的数据库,支持数据库与csv文件,excle同步以及定时支持大数据导入导出,数据差分,并把处理结果打zip包加密发送mail,是用户实现数据库...

    Import Fix 1.6傲鳥修正版

    3. 导入兼容性:支持多种数据格式,如CSV、Excel、XML、JSON等,同时可能兼容各种数据库系统,如MySQL、SQL Server、Oracle等。 4. 自动修复:通过智能算法,对可修复的数据错误进行自动修复,无需用户手动操作,极...

    SharePoint Server2007宝典.part02

    16.4.2 用SQL Server 2005 Analysis Services的数据创建指标 361 16.5 手动实现KPI 363 16.6 小结 364 第17章 实现业务数据目录 365 17.1 确定业务数据 365 17.1.1 确定数据源 365 17.1.2 确定场景和目标 366 17.2 ...

    黑月ADODB数据库操作类1.33版易语言模块源码

    ADODB是微软提供的一种数据库访问接口,它可以在多种数据库系统上工作,如Microsoft SQL Server、Access、Excel等。通过ADODB,开发者可以使用统一的API来访问不同的数据库,实现跨平台的数据操作。这个易语言模块将...

    数据库管理移植工具(EXCEL相关) ver 20130930

    这个工具可能支持多种数据库系统,如MySQL、Oracle、SQL Server等,帮助用户在不同的数据库平台之间进行数据迁移,确保数据的一致性和完整性。版本号“ver 20130930”表明这是2013年9月30日发布的一个特定版本,可能...

    数据库工具,适用多个数据库

    5. **数据导入导出**:工具支持从多种文件格式(如CSV、Excel)导入数据,也可以将数据导出为多种格式,方便数据交换。 6. **备份和计划**:Navicat提供了备份功能,可以创建备份计划,确保数据安全。 7. **数据...

    baikeac20121128

    支持excel数据导入数据库。 支持单个文本自定义格式(如mdx源文件格式)导入数据库。 支持从数据库直接导出数据为mdx源文件,即可用MdxBuilder直接转换为MDX词典。 导入导出进度条显示。 下载编辑 支持可视化编辑。...

    数据库设计工具BDB v3.0

    D,数据表数据和Excel文件之间的双向导入导出操作。 E,提供特定的数据文件格式,用于不同数据库之间的数据导入,导出。 &lt;br&gt;6,SQL脚本预输出 数据库模型或实体数据库有所改动时,可预输出更新SQL...

    DbVisualizer-6.0.7-x86

    1. SQLServer:由微软公司开发的关系型数据库管理系统,广泛应用于企业级应用,提供高可用性和数据安全性。 2. MySQL:一种开源、免费的数据库,因其高效、稳定和易于管理的特点,被大量网站和应用程序采用。 3. ...

Global site tag (gtag.js) - Google Analytics