首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

指点,百万级别数据量处理。多谢

2014-01-15 
指点,百万级别数据量处理。谢谢现有一需求,百万级别数据量存放在一个xls文件中,要将此文件里面的所有字段(

指点,百万级别数据量处理。谢谢
现有一需求,百万级别数据量存放在一个xls文件中,要将此文件里面的所有字段(列)取出存放到数据库中,大约为28列,上传至服务器端后如何处理。

1.百万级数据量(xls 28列 ,oracle数据库)
2.要检查数据库中是否存在该数据中的一条数据
3.要求性能要快
4.在插入过程中怎么时时将后台发现出现异常的数据传入到前端给用户查看,如:第多少行添加失败。
5.在上传过程中能不能做一些相应的处理

求大神指点指点,谢谢。

[解决办法]
xls文件可以直接插入数据库的,写个脚本就可以了,以前做保险项目的时候,总做这个,不过当时的脚本是别人写的,你可以去oracle技术区发个帖。
[解决办法]
百万条数据往数据库里插入,直接用脚本也得半个小时时间,用程序时间的更久。
[解决办法]
楼主可以尝试下poi去处理excel文件的方式。
[解决办法]
话说XLS也就是 excle2003的格式吧?

貌似excel2003 一个sheet最多只能65535行吧,,,你这个。。。。。。
[解决办法]

引用:
xls文件可以直接插入数据库的,写个脚本就可以了,以前做保险项目的时候,总做这个,不过当时的脚本是别人写的,你可以去oracle技术区发个帖。



引用:
Quote: 引用:

xls文件可以直接插入数据库的,写个脚本就可以了,以前做保险项目的时候,总做这个,不过当时的脚本是别人写的,你可以去oracle技术区发个帖。


不是我们自己到入  是客户那边他们导入 得写这么一个功能 

把xls整个上传到Server,然后在Server端用脚本执行,两个功能都有了。

返回执行错误,用AJAX。
[解决办法]
引用:
现有一需求,百万级别数据量存放在一个xls文件中,要将此文件里面的所有字段(列)取出存放到数据库中,大约为28列,上传至服务器端后如何处理。

1.百万级数据量(xls 28列 ,oracle数据库)
2.要检查数据库中是否存在该数据中的一条数据
3.要求性能要快
4.在插入过程中怎么时时将后台发现出现异常的数据传入到前端给用户查看,如:第多少行添加失败。
5.在上传过程中能不能做一些相应的处理

求大神指点指点,谢谢。


xls最大行数65536

引用:
现有一需求,百万级别数据量存放在一个xls文件中,要将此文件里面的所有字段(列)取出存放到数据库中,大约为28列,上传至服务器端后如何处理。

1.百万级数据量(xls 28列 ,oracle数据库)
2.要检查数据库中是否存在该数据中的一条数据
3.要求性能要快
4.在插入过程中怎么时时将后台发现出现异常的数据传入到前端给用户查看,如:第多少行添加失败。
5.在上传过程中能不能做一些相应的处理

求大神指点指点,谢谢。


一个XLS文件最大行数65535行还是65536行,我不知道你这个XLS是怎么样的。
如果按你所述有那么大,如果是我做的话我会用多线程。
比如:一个线程从1-10000,第N个线程处理(N-1)*10000+1 ~ N*10000的数据,
插入过程中有异常,把错误信息存入某张数据库表,
用户前端可以用AJAX轮训这张数据表的信息。
[解决办法]
这么多数据用poi读取太慢了,直接用oracle的脚本命令导入excel.客户把文件上传到了服务器你直接在用oracle脚本导入就是了
[解决办法]
感觉都没说到点子上。
批量插入百万行数据,我个人认为程序上不是瓶颈,瓶颈是数据库。像楼上说的多线程,只不过是解决了表面现象,数据库该堵的还得堵,真要这样做了,效率上不会有什么提升的。
不做任何检查的插入百万行数据,就需要不少耗时了,更何况楼主还要求每条数据插入前做数据检查是否已存在。

个人感觉楼主的要求不可能兼顾,如果要尽量快速导入,SQL SERVER 可以使用BCP导入。
如果表结构上有唯一性约束,BCP是会保证的。
但是还要求实时返回错误信息,这个真心没想好怎么弄。
[解决办法]
百万级别的数据做校验的话肯定是比较慢的,毕竟这个数据库的交互次数没法避免,错误信息可以在解析校验的时候用一个字符串去拼接好,然后返回前台展示,主要还是性能不好解决吧
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

现有一需求,百万级别数据量存放在一个xls文件中,要将此文件里面的所有字段(列)取出存放到数据库中,大约为28列,上传至服务器端后如何处理。

1.百万级数据量(xls 28列 ,oracle数据库)
2.要检查数据库中是否存在该数据中的一条数据
3.要求性能要快
4.在插入过程中怎么时时将后台发现出现异常的数据传入到前端给用户查看,如:第多少行添加失败。
5.在上传过程中能不能做一些相应的处理

求大神指点指点,谢谢。


xls最大行数65536

引用:
现有一需求,百万级别数据量存放在一个xls文件中,要将此文件里面的所有字段(列)取出存放到数据库中,大约为28列,上传至服务器端后如何处理。

1.百万级数据量(xls 28列 ,oracle数据库)
2.要检查数据库中是否存在该数据中的一条数据
3.要求性能要快
4.在插入过程中怎么时时将后台发现出现异常的数据传入到前端给用户查看,如:第多少行添加失败。
5.在上传过程中能不能做一些相应的处理

求大神指点指点,谢谢。


一个XLS文件最大行数65535行还是65536行,我不知道你这个XLS是怎么样的。
如果按你所述有那么大,如果是我做的话我会用多线程。
比如:一个线程从1-10000,第N个线程处理(N-1)*10000+1 ~ N*10000的数据,
插入过程中有异常,把错误信息存入某张数据库表,
用户前端可以用AJAX轮训这张数据表的信息。



先不纠结这个xls最大值的问题 我们组长给我个需求就是一个表格文件 里面有一百万条数据,你现在要做的就是上传服务器解析 然后插入数据库  昨天自己手动造了一万条数据 之前没有写过类似的解析表格的 用的poi文件大概是1M 直接java内存爆了 我现在的思路是这样的 为了防止内存爆掉  切分文件 然后线 用多程去读取,就是有没有更好的解决方式。谢谢


压缩XLS文件 =》 到服务器 =》 解压 =》 分块 =》 插入
[解决办法]
建议你说服你们组长不要使用xls格式来进行大数据量的导入工作

如果非得用exlce来处理数据,,可以让客户保存成csv格式的文件  csv是无格式文件,传到服务器端后当做文本文件处理,字段以逗号分隔

另外还可以使用excel2007以上版本,,因为xlsx其实使用的是xml方式进行数据存储的,,在服务器端可以采用sax方式进行解析

总之不要使用xls,,xls是微软自己的数据格式文件,行数先不说,,就说你楼主提到的OOM问题吧,,想解决这问题,嘿嘿付出与回报不成比例
[解决办法]
这.写这个贴的时候我的机器上面的表格版本太低,然后我就用的xls表示当前我要解析添加的文件了,换成其他高版本的表格文件也是可以的。 现在我考虑的就是如何快速的去添加,处理我的这些需求,这个功能暂时还没开始写,上面的好多朋友说用数据库脚本导入。 

csv是最低版本的excel文件,可以说不是excel,就是文本。

热点排行