如何向Oracle数据库表中进行大数据量的插入并提交?

我将A数据库里的一张表里的数据通过DBLink的方式插入到B数据库中,A表只有两个字段,但是却又几千万的数据,一句很简单的Sql却执行了两个小时还没有执行完毕,请问应该如... 我将A数据库里的一张表里的数据通过DBLink的方式插入到B数据库中,A表只有两个字段,但是却又几千万的数据,一句很简单的Sql却执行了两个小时还没有执行完毕,请问应该如何进行这种大数据量的插入操作?个人觉得应该是一次性插入并提交的数据量太大的缘故导致速度特别慢,请问谁有更好的方法解决这个问题呢。 展开
 我来答
badkano
2015-07-09 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885365
团长

向TA提问 私信TA
展开全部

大数据量提交可能会造成系统瘫痪,所以不建议这样做。

如果有需要,可以在导出insert语句的时候分批次commit(提交)。

方法如下:

1、登录plsql,进入导出表

2、选择要导出的表,然后下图位置根据需要写上每次多少行提交,选择导出路径,点击导出即可

匿名用户
2019-01-08
展开全部
A和B数据库中的表结构完全一致,且仅是想一次性迁移A数据库中数据至B数据库的话,使用数据泵方式呢?将A的数据使用数据泵导出成dmp,在B数据库中使用该dmp导入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangzhiqing999
2011-08-22 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3331万
展开全部
一次折腾几千万的话, 那么设置一下, 有 20W了, 就自动提交一下。
set autocommit on;
set autocommit 200000;

然后,假如你的目标数据库, 是归档的话, 可以

INSERT /*+ append */ INTO 目标表 nologging SELECT * FROM 源表@DBLINK;

commit;
set autocommit off;

假如你的 目标表 上面, 有 索引的话, 建议先删除 索引。
等 上面的 INSERT 语句执行完毕后, 再重建索引。
追问
insert into T1 select * from T2@Oracle12;
commit;

请问set autocommit 200000;应该在哪里添加?!
追答
SQL Plus 里面应该可以.

在 PL/SQL Developer 里面, 好像不行。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式