技术面试的时候,他问我,excel里有百万条数据,如何写入到数据库呢? 这里考的是性能上的问题。
个人回答不上来,甚至不知道怎么回答,就对他说 只要在不影响性能的前提下分批读取分批插入, 问我怎么设计,我直接蒙了。 这样的题目我应该怎么回答????请教给位大神。
不使用框架。
直接把两种文件格式改咯。。。。对文件直接做格式转换。这是最快的方式了。 读个毛,写个毛,直接用C,把excel的文件读到内存。按照数据库表的规则,直接对数据库的已有表文件操作。如果格式没有问题,整块的塞。
别说我SB,这是专业做法。也就是所谓的转码器的工作。
######这位同学估计是在说类似access,dbf这种小型数据库吧,可以直接按他的文件格式写,一般这种东西普通人都想到怎么往大型数据库里面导入######膜拜,还能这么搞######直接用C,把excel的文件读到内存。按照数据库表的规则,直接对数据库的已有表文件操作. 我居然没读懂这句话。。。######还有这样的做法,太神了。完全没想到。。。。牛人啊######批量插入: com.jfinal.plugin.activerecord.Db.batch(......)######应该是想要将Excel当数据源select * into ……这样的答案吧。###### @Secret : 看你头像估计是JAVA的,做应用开发的,自然爽。我们做C的,整天就没白天黑夜的在底层折腾这种事情。你们如同豪华油轮上的侍者,虽然服务于民,但多少一样可以看到风景。我们是锅炉房里铲煤的,自然你们不知道昏天黑地里,还有一片火光。。。哈。是java吗?
我只用过jxl.jar包从excel导入数据库,三五万条没问题,太大量的也没有试过。
我是这么做的,先从excel读取一定的数量,比如说100条,批量插入数据库,甚至可以适当的sleep一下释放掉数据库服务器资源,如此往复。
百万条excel数据用jxl不知道会不会报内存溢出,但是可以在运行程序之前,加大jvm内存,应该是可行的。
######又是小倩风格.
execl文件是啥格式? 好吧, 这个也还可以有资料可以参考 , 毕竟有可以兼容execl的开源软件可以参考.
那数据库表文件呢, 去哪里可以看到oracle的数据文件是啥格式?哪里有这样的资料?
直接把两种文件格式改咯。。。。对文件直接做格式转换。这是最快的方式了。 读个毛,写个毛,直接用C,把excel的文件读到内存。按照数据库表的规则,直接对数据库的已有表文件操作。如果格式没有问题,整块的塞。
别说我SB,这是专业做法。也就是所谓的转码器的工作。
用 win 的Com 接口, 直接调用 excel的接口, 导出csv
然后 想咋干就咋干
软件就是服务嘛
把Excel 当成工人看待
是java吗?
我只用过jxl.jar包从excel导入数据库,三五万条没问题,太大量的也没有试过。
我是这么做的,先从excel读取一定的数量,比如说100条,批量插入数据库,甚至可以适当的sleep一下释放掉数据库服务器资源,如此往复。
百万条excel数据用jxl不知道会不会报内存溢出,但是可以在运行程序之前,加大jvm内存,应该是可行的。
是java吗?
我只用过jxl.jar包从excel导入数据库,三五万条没问题,太大量的也没有试过。
我是这么做的,先从excel读取一定的数量,比如说100条,批量插入数据库,甚至可以适当的sleep一下释放掉数据库服务器资源,如此往复。
百万条excel数据用jxl不知道会不会报内存溢出,但是可以在运行程序之前,加大jvm内存,应该是可行的。
From http://www.andykhan.com/jexcelapi/tutorial.html
Memory Allocation and Sheet Caching
For very large files, it was found that reading in the entire workbook led to horrendous performance. As of version 1.6, it was therefore decided to read in a sheet at a time. Every call to getSheet() frees up all the objects currently allocated in the current sheet and then reads in all the data from the next sheet. This alleviated the problems which previously occurred, but it does however assume that the giant size workbooks are spread over several sheets - if not, performance problems and OutOfMemoryExceptions may still occur.版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。