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

解决方案 »

  1.   

    楼主可以尝试下poi去处理excel文件的方式。
      

  2.   

    话说XLS也就是 excle2003的格式吧?貌似excel2003 一个sheet最多只能65535行吧,,,你这个
      

  3.   


    不是我们自己到入  是客户那边他们导入 得写这么一个功能 
    把xls整个上传到Server,然后在Server端用脚本执行,两个功能都有了。返回执行错误,用AJAX。
      

  4.   


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

  5.   


    xls最大行数65536
    一个XLS文件最大行数65535行还是65536行,我不知道你这个XLS是怎么样的。
    如果按你所述有那么大,如果是我做的话我会用多线程。
    比如:一个线程从1-10000,第N个线程处理(N-1)*10000+1 ~ N*10000的数据,
    插入过程中有异常,把错误信息存入某张数据库表,
    用户前端可以用AJAX轮训这张数据表的信息。
    先不纠结这个xls最大值的问题 我们组长给我个需求就是一个表格文件 里面有一百万条数据,你现在要做的就是上传服务器解析 然后插入数据库  昨天自己手动造了一万条数据 之前没有写过类似的解析表格的 用的poi文件大概是1M 直接java内存爆了 我现在的思路是这样的 为了防止内存爆掉  切分文件 然后线 用多程去读取,就是有没有更好的解决方式。谢谢
      

  6.   

    poi解析 文件过大会爆java内存 怎么处理 谢谢
      

  7.   

    这么多数据用poi读取太慢了,直接用oracle的脚本命令导入excel.客户把文件上传到了服务器你直接在用oracle脚本导入就是了
      

  8.   

    感觉都没说到点子上。
    批量插入百万行数据,我个人认为程序上不是瓶颈,瓶颈是数据库。像楼上说的多线程,只不过是解决了表面现象,数据库该堵的还得堵,真要这样做了,效率上不会有什么提升的。
    不做任何检查的插入百万行数据,就需要不少耗时了,更何况楼主还要求每条数据插入前做数据检查是否已存在。个人感觉楼主的要求不可能兼顾,如果要尽量快速导入,SQL SERVER 可以使用BCP导入。
    如果表结构上有唯一性约束,BCP是会保证的。
    但是还要求实时返回错误信息,这个真心没想好怎么弄。
      

  9.   


    xls最大行数65536
    一个XLS文件最大行数65535行还是65536行,我不知道你这个XLS是怎么样的。
    如果按你所述有那么大,如果是我做的话我会用多线程。
    比如:一个线程从1-10000,第N个线程处理(N-1)*10000+1 ~ N*10000的数据,
    插入过程中有异常,把错误信息存入某张数据库表,
    用户前端可以用AJAX轮训这张数据表的信息。
    先不纠结这个xls最大值的问题 我们组长给我个需求就是一个表格文件 里面有一百万条数据,你现在要做的就是上传服务器解析 然后插入数据库  昨天自己手动造了一万条数据 之前没有写过类似的解析表格的 用的poi文件大概是1M 直接java内存爆了 我现在的思路是这样的 为了防止内存爆掉  切分文件 然后线 用多程去读取,就是有没有更好的解决方式。谢谢压缩XLS文件 =》 到服务器 =》 解压 =》 分块 =》 插入
      

  10.   

    建议你说服你们组长不要使用xls格式来进行大数据量的导入工作如果非得用exlce来处理数据,,可以让客户保存成csv格式的文件  csv是无格式文件,传到服务器端后当做文本文件处理,字段以逗号分隔另外还可以使用excel2007以上版本,,因为xlsx其实使用的是xml方式进行数据存储的,,在服务器端可以采用sax方式进行解析总之不要使用xls,,xls是微软自己的数据格式文件,行数先不说,,就说你楼主提到的OOM问题吧,,想解决这问题,嘿嘿付出与回报不成比例
      

  11.   

    这.写这个贴的时候我的机器上面的表格版本太低,然后我就用的xls表示当前我要解析添加的文件了,换成其他高版本的表格文件也是可以的。 现在我考虑的就是如何快速的去添加,处理我的这些需求,这个功能暂时还没开始写,上面的好多朋友说用数据库脚本导入。
      

  12.   

    数据库是oracle  用java程序可以调用数据库脚本吗 这样的话会不会导致一些其他的问题产生
      

  13.   

    拿个我们实际的例子给你参考:
    1、1个线程读取xls放入队列;
    2、N个线程从队列读取数据,并插入数据库;
    3、批量提交用上,1000个一批;100万数据大概5分钟左右。
      

  14.   

    这.写这个贴的时候我的机器上面的表格版本太低,然后我就用的xls表示当前我要解析添加的文件了,换成其他高版本的表格文件也是可以的。 现在我考虑的就是如何快速的去添加,处理我的这些需求,这个功能暂时还没开始写,上面的好多朋友说用数据库脚本导入。 csv是最低版本的excel文件,可以说不是excel,就是文本。
      

  15.   

    百万的数据放在excel中  本身就有问题吧
      

  16.   

    oracle load data 可不可以?