excel表导入到数据库的问题

你好我叫靓仔 2015-09-17 02:35:47
求大神指教,我已经成功的可以将excel中的数据导入到数据中,但是,仍然会报一个 “For input string: " " ”的错误,而且当我查看数据库表的时候,某些明明excel里面是4位数的值在数据库中会转成了两位数,请大神指教指教,帮我解决这两个问题吧
...全文
188 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiyiwan 2015-09-20
  • 打赏
  • 举报
回复
可以把程序贴到这里 http://codepad.org/ 生成的链接贴出来
LongRui888 2015-09-18
  • 打赏
  • 举报
回复
引用 9 楼 rainbowlovers 的回复:
[quote=引用 8 楼 spiritofdragon 的回复:] 看你的输出,感觉是一条一条插入数据库的。估计是读第一行记录时,才生成表结构并把字段类型确定了。(比如你第一行数据是2位的,那么这个字段就被定义为 number(2),后面即使有数据,也不会改类型了。)。如果这样,你要么改程序(number型都不要确定长度),要么,把数据行中位数最长的一条记录放在Excel第一行,这样也算是偷步行为。
我程序定义实体类时,是设置了int类型,而且实体类里面应该不能设置长度限制的对吧,后来我看了看数据库表,也把那个长度限制去除了还是不行啊[/quote] 我在oracle里看了,emp表的mepno字段的类型是 NUMBER(4,0),所以可能你在程序里需要特别注意一下,判断一下。
spiritofdragon 2015-09-18
  • 打赏
  • 举报
回复
你的图片2,是不是,已经从Excel里读到实体里后,再循环 在java里输出给我们看的? 如果是,那么就是你Oracel的数据类型理解清楚,Oracle里没有int型,你用number(22)吧。
你好我叫靓仔 2015-09-18
  • 打赏
  • 举报
回复
引用 8 楼 spiritofdragon 的回复:
看你的输出,感觉是一条一条插入数据库的。估计是读第一行记录时,才生成表结构并把字段类型确定了。(比如你第一行数据是2位的,那么这个字段就被定义为 number(2),后面即使有数据,也不会改类型了。)。如果这样,你要么改程序(number型都不要确定长度),要么,把数据行中位数最长的一条记录放在Excel第一行,这样也算是偷步行为。
我程序定义实体类时,是设置了int类型,而且实体类里面应该不能设置长度限制的对吧,后来我看了看数据库表,也把那个长度限制去除了还是不行啊
spiritofdragon 2015-09-18
  • 打赏
  • 举报
回复
看你的输出,感觉是一条一条插入数据库的。估计是读第一行记录时,才生成表结构并把字段类型确定了。(比如你第一行数据是2位的,那么这个字段就被定义为 number(2),后面即使有数据,也不会改类型了。)。如果这样,你要么改程序(number型都不要确定长度),要么,把数据行中位数最长的一条记录放在Excel第一行,这样也算是偷步行为。
你好我叫靓仔 2015-09-18
  • 打赏
  • 举报
回复
引用 10 楼 spiritofdragon 的回复:
你的图片2,是不是,已经从Excel里读到实体里后,再循环 在java里输出给我们看的? 如果是,那么就是你Oracel的数据类型理解清楚,Oracle里没有int型,你用number(22)吧。
改过了number,都还是不行,要不我把程序发给您帮我看看可以吗?
你好我叫靓仔 2015-09-17
  • 打赏
  • 举报
回复
引用 6 楼 spiritofdragon 的回复:
报错很明显,就是文本转数字型时,格式错误。
而且也说了。是“”空字符串转型时。空不能自动当作0转成数字。
所以,
要么,你改下程序,加个判断,遇到“”时,直接赋值0。
要么,你用excel的Ctrl+G,定位所有的空白单元格,手动全部(Sheft+Enter)输入0。再导入。

如果是重复工作,那么改程序吧,一劳永逸,如果是一次性工作而且不擅长开发的话,可以改Excel也行。

至于你说的什么4位变2位啊...没看出来啊?你把Excel和数据库都圈上红,截图看看。



spiritofdragon 2015-09-17
  • 打赏
  • 举报
回复
报错很明显,就是文本转数字型时,格式错误。 而且也说了。是“”空字符串转型时。空不能自动当作0转成数字。 所以, 要么,你改下程序,加个判断,遇到“”时,直接赋值0。 要么,你用excel的Ctrl+G,定位所有的空白单元格,手动全部(Sheft+Enter)输入0。再导入。 如果是重复工作,那么改程序吧,一劳永逸,如果是一次性工作而且不擅长开发的话,可以改Excel也行。 至于你说的什么4位变2位啊...没看出来啊?你把Excel和数据库都圈上红,截图看看。
LongRui888 2015-09-17
  • 打赏
  • 举报
回复
引用 4 楼 rainbowlovers 的回复:
[quote=引用 3 楼 yupeigu 的回复:] [quote=引用 2 楼 rainbowlovers 的回复:] [quote=引用 1 楼 yupeigu 的回复:] 你是怎么把excel的数据倒进数据库的呢? 有代码不
我该怎么给你看[/quote] 你是通过上面方式导入的,比如是你自己写了一个程序,还是通过sql一句里的openrowset或opendatasource,或者openquery,还是通过ssis导入的?[/quote] 我是自己写了个程序做的,资源也是从csdn上面下的,照着做,出现了下面的代码错误 [/quote] 你是把数据导入到oracle的把。 你可以在java板块问问
你好我叫靓仔 2015-09-17
  • 打赏
  • 举报
回复
引用 3 楼 yupeigu 的回复:
[quote=引用 2 楼 rainbowlovers 的回复:]
[quote=引用 1 楼 yupeigu 的回复:]

你是怎么把excel的数据倒进数据库的呢? 有代码不


我该怎么给你看[/quote]

你是通过上面方式导入的,比如是你自己写了一个程序,还是通过sql一句里的openrowset或opendatasource,或者openquery,还是通过ssis导入的?[/quote]

我是自己写了个程序做的,资源也是从csdn上面下的,照着做,出现了下面的代码错误
LongRui888 2015-09-17
  • 打赏
  • 举报
回复
引用 2 楼 rainbowlovers 的回复:
[quote=引用 1 楼 yupeigu 的回复:] 你是怎么把excel的数据倒进数据库的呢? 有代码不
我该怎么给你看[/quote] 你是通过上面方式导入的,比如是你自己写了一个程序,还是通过sql一句里的openrowset或opendatasource,或者openquery,还是通过ssis导入的?
你好我叫靓仔 2015-09-17
  • 打赏
  • 举报
回复
引用 1 楼 yupeigu 的回复:
你是怎么把excel的数据倒进数据库的呢? 有代码不
我该怎么给你看
LongRui888 2015-09-17
  • 打赏
  • 举报
回复
你是怎么把excel的数据倒进数据库的呢? 有代码不

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧