如何解决大量数据导入到数据库?

来源:百度知道 编辑:UC知道 时间:2024/05/16 19:41:06
现在有这样的一个需求:
1.有大量的数据要导入到数据库中,数据库暂定为oracle 10g。
2.提供两种导入方法:追加导入和更新导入。
3.一次导入的数据量暂以十万级为单位。
4.在导入时,如果数据库中存在现在将要导入的数据(既现在导入的数据在数据库中存在,只需要修改的),先把原记录备份到另外一张表中,然后再进行修改操作,目的是保存所有数据的历史版本。
5.程序语言采用Java。
6.在操作和代码上无任何其他限制。
还有些没写上:
1.导入的数据以上传电子表格的形式。
2.不只是一张表,一共有三张表,关系:A<-B<-C (例如:国家<-省<-市)
3.在进行导入时,上传的电子表格(一个sheet)已包含三张表的所有内容和关系,即电子表格的每行记录以C为唯一标准。

我暂时的想法是再建一张拥有三张表所有字段的中间表,然后再操作。

谁做过相关方面的,请给给建议。谢谢。

这个我都做过不知道多少了 太求简单了 procedure就搞定了 不就10万吗 也太少了点吧
补充 不需要中间表 其实这个不用存储过程用绑定变量的做法效果还是不错的不信你试下 我以前判断是否存在用的是载表的方法实现的 当然对于不同的数据量要自己处理 进行update insert用存储过程网上应该很多例子 当然也可以把判断在存储过程里做

针对你说的第二个问题:追加导入和更新导入,其实这就是一种方法的两个方面,若是数据库里没有数据,则追加,否则更新;这里提醒一下:注意锁定表
第三个问题:数十万级为单位是指百万还是千万数据?数据量大的情况下注意其SQL的优化
第四:比较简单的方式是:不管数据库里有没有数据需要更新,都先备份,然后再进行操作
关于问题补充:你说的电子表示是不是指excel中拥有三个sheet,每个sheet为一张表?
你说的建立中间表的想法是非常正确的,这样可以保证源数据和目的数据源的安全,有序
附:以你提问的水准,我想不需要提供具体的代码了