格式导致的Excel导入sql出现异常的解决方法
本来程序是正常运行的,有时候会因为用户的excel文档没有按要求的格式来做,才会出现一些异常情况。本以为这次也是一样,后来拿到数据一看,并没有发现什么异常,而且自己又照着做了一些数据,竟然也会出现异常,只好怀疑是自己的程序有问题了。
常言说的好,最难找的是最后一个错误,这话确实不错。我几乎动用了我所掌握的各种手段,程序上真的没办法找出有啥问题了。在一个问题上折腾久了,浪费时间不说,还容易让自己的情绪低落。到后来,还是转去怀疑用户的数据有问题,无意中做了一下格式调整,竟然发现异常不见了。
Excel的单元格格式设置十分丰富,数据一旦被格式化,那你所看到可能已经不是庐山真面目了。比如货币格式,数据本身只是一串数字,并不会包含货币符号。
在我这个程序中,有一列数据为编码,可能是字母和数字的混合,也可能是纯数字,正常情况下,应该设置成文本格式,可能因为纯数字在这种情况下会有一个错误提示,也就是在单元格旁边出现了一个黄色的感叹号,用户大概觉得不对,就设置成了邮政编码这种特殊格式,数据看起来没啥变化,但程序在识别的时候就出现了异常。还有一个字段是月份,程序要求在一位数前补0,如果格式设置为数字,前面的0就没有了,所以必须设置为文本。如果自定义为:00,虽然在excel下显示的数字和想要的一样,但程序在处理时会当成一个数字处理,结果也会不符合要求。
总结一下,对于要导入到数据库的excel数据,不要做格式化处理,保持原始的字符或数字格式是最明智的选择。
相关推荐
-
Excel导入Sqlserver数据库脚本
受以前旧同事之托,在博客里发这段脚本: exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure SELECT * INTO tmp_asset FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=d:\Excel数据源\资产印章.xls', 'SE
-
Excel导入数据库时出现的文本截断问题解决方案
问题 在把Excel导入到数据库中时,发生文本截断问题:即导入的数据每行只有一部分,原始的Excel数据为: 忽略错误 导入SQLServer2008过程中,如果源数据和目标数据类型不匹配会导入失败,所以导入数据时会忽略错误,这次导入题库也是,结果出现了这样的问题: 仔细观察你会发现,题目不完整,最长为25个汉字,很明显这是varchar(50)数据类型,但是源数据和目的数据明明都为文本类型. 不忽略错误 如果不忽略错误,导入数据最后一步会产生这样的问题: 复制代码 代码如下: -正在
-
php 将excel导入mysql
这里介绍一个直接将excel文件导入mysql的例子.我花了一晚上的时间测试,无论导入简繁体都不会出现乱码,非常好用.PHP-ExcelReader,下载地址: http://sourceforge.net/projects/phpexcelreader说明: 测试环境:MYSQL数据库采用utf8编码.导入EXCEL文档是xls格式,经过测试,xlsx 格式[excel 2007]也OK. 文中红色标注为需要注意的地方,请替换成你配置好的数据,如数据库配置等.运行http://localost
-
格式导致的Excel导入sql出现异常的解决方法
本来程序是正常运行的,有时候会因为用户的excel文档没有按要求的格式来做,才会出现一些异常情况.本以为这次也是一样,后来拿到数据一看,并没有发现什么异常,而且自己又照着做了一些数据,竟然也会出现异常,只好怀疑是自己的程序有问题了. 常言说的好,最难找的是最后一个错误,这话确实不错.我几乎动用了我所掌握的各种手段,程序上真的没办法找出有啥问题了.在一个问题上折腾久了,浪费时间不说,还容易让自己的情绪低落.到后来,还是转去怀疑用户的数据有问题,无意中做了一下格式调整,竟然发现异常不见了. Exce
-
mysql导入sql文件出错的解决方法
目录 一.在网上找了很多方法都无法解决,无意中看到一个mysql数据同步的方法: 二.从备份中导出.sql再导入到本地数据库中 在一个工程中数据库往往要分为实际运用数据库和测试数据库,最直接的方法当然是从源数据库中导出.sql文件再导入到本地的数据库中,我这的实例是原有一个项目数据库在服务器上现在想导出一份到本地做测试用,工程中用的是mysql-connector-java-5.1.13-bin.jar,而我现有的mysql数据库是 mysql-connector-java-5.1.6-bin.
-
MySQL导入sql脚本错误:2006 解决方法
MySQL导入sql脚本错误:2006 - MySQL server has gone away 到如一些小脚本很少报错,但最近导入一个10+M的SQL脚本,却重复报错: Error occured at:2014-03-24 11:42:24 Line no.:85 Error Code: 2006 - MySQL server has gone away 最终找到原因,原来是MySQL导入大批量数据的时候超出了默认允许最大的数据包所以就提示2006 - MySQL server has go
-
C#实现Excel表数据导入Sql Server数据库中的方法
本文实例讲述了C#实现Excel表数据导入Sql Server数据库中的方法.分享给大家供大家参考,具体如下: Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nvarchar类型, tt nvarchar类型 (注意:my_test表中的数据类型必须与Excel中相应字段的类型一致) 2. 我们用SELECT * FROM OPENROWSET(
-
MySQL导入sql文件的三种方法小结
目录 一.使用工具Navicat for MySQL导入 1.打开localhost_3306,选中右击“新建数据库” 2.指定数据库名和字符集(可根据sql文件的字符集类型自行选择) 3.选中数据库下的表运行SQL文件 4.选中路径导入 二.使用官方工具MySQL Workbench导入 1.第一种方法 2.第二种方法 三.使用命令行导入 总结 一.使用工具Navicat for MySQL导入 工具的具体下载及使用方法推荐的一篇文章:https://www.jb51.net/article/
-
java中double类型运算结果异常的解决方法
问题: 对两个double类型的值进行运算,有时会出现结果值异常的问题.比如: System.out.println(19.99+20); System.out.println(1.0-0.66); System.out.println(0.033*100); System.out.println(12.3/100); 输出: 39.989999999999995 0.33999999999999997 3.3000000000000003 0.12300000000000001 解决方法: J
-
layui表格 返回的数据状态异常的解决方法
最近用到了layui表格组件,结果发现数据返回状态异常 在网上查询了下是因为需要转成固定个格式 然而layui的table默认返回的数据格式为: response: { //定义后端 json 格式,详细参见官方文档 code: 0, msg: "", count: 1000, data: [] } 网上看了有些方法是转成json数据 JSONObject obj=new JSONObject(); //前台通过key值获得对应的value值 obj.put("code&qu
-
Mybatis详解在注解sql时报错的解决方法
目录 错误: 文件结构 BookMapper.java BookMapperSQL .java Mybatis的配置文件 分析: 错误: 在做Mybatis用注解方式来注入sql的练习时,报了这样子的错误. 遇到错误很正常,然后我又从学了一遍今天刚刚学的内容,温故而知新嘛. 错误问题如下: 文件结构 BookMapper.java public interface BookMapper { @SelectProvider(type = BookMapperSQL.class,method = "
-
MYSQL时区导致时间差了14或13小时的解决方法
目录 CST 时区 排错过程 解决方案 MySQL时区有问题(相差13或14小时) p>我一般使用MYSQL定义字段类型时,一般使用TIMESTAMP时间戳来定义创建时间与更新时间,并将其定义为默认值为CURRENT_TIME,但是由于场景特殊,现在我需要将一个任务的开始时间与结束时间记录,并写入数据库,那么我的开始时间戳与结束时间戳则不应该是使用数据库自带的默认值的,而是应该使用我使用java代码里面传进去的LocalDateTime.now()方法.但是插入后数据我发现有问题,插入的时间比我
-
SQL注入原理与解决方法代码示例
一.什么是sql注入? 1.什么是sql注入呢? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击.如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入. 黑客通过SQL注入攻击
随机推荐
- 常用的正则表达式集锦
- 史上最简单的MyBatis动态SQL入门示例代码
- python中numpy包使用教程之数组和相关操作详解
- 在ASP.NET中使用Session常见问题集锦
- 必备的JS调试技巧汇总
- asp.net 修饰符介绍(关于public、private、protected、internal)
- php代码书写习惯优化小结
- Python的“二维”字典 (two-dimension dictionary)定义与实现方法
- JavaScript实现复制内容到粘贴板代码
- PHP实现定时生成HTML网站首页实例代码
- Linux Shell 数组建立及使用技巧
- javascript操作html控件实例(javascript添加html)
- 使用jquery hover事件实现表格的隔行换色功能示例
- JQuery动画与特效实例分析
- NodeJs使用Mysql模块实现事务处理实例
- ES6正则表达式扩展笔记
- linux 内存清理/释放命令总结
- Android生存指南之:解Bug策略与思路问题的详解
- 在ASP.NET 2.0中操作数据之四十一:DataList和Repeater数据分页
- Java泛型和Class类用法示例