语句我知道怎么写,关键是table1中有1000多万条数据,怎么插入到table2中?
32 个解决方案
#1
通過DBlink直接INSERT
#2
楼主可以换个思路,为什么每次都要删除table2中的数据呢,更新里面的数据不行吗?
两台服务器需要dblink了
可以在table1表中设置触发器,当有更新的时候把数据更新到table2中
两台服务器需要dblink了
可以在table1表中设置触发器,当有更新的时候把数据更新到table2中
#3
直接update速度会快些吗?我先truncate然后insert时,速度很慢,还可能死机。
#4
exp/imp
#5
exp/imp
rename A to B
rename A to B
#6
可以尝试下楼上两位的方法
#7
alter table B nologging ;
insert into B select * from A@dblink where ...;--如果是增量,可以在条件里限制。
commit;
#8
导入导出是可以的,但是太麻烦了,直接进行同步不行嘛?
#9
这事手工做的话,EXP/IMP最好了
如果不是,还是用DBLINK吧
操作放在B上,建一个DBLINK -> A 就可以了
至于性能方面,好像没有具体说到环境、表的设计等其它方面,插入慢,数据量只是参考点之一。
如果不是,还是用DBLINK吧
操作放在B上,建一个DBLINK -> A 就可以了
至于性能方面,好像没有具体说到环境、表的设计等其它方面,插入慢,数据量只是参考点之一。
#10
如果是内网的话dblink也可以,外网最好是exp,压缩后再imp。
#11
该有的方法楼上都已经说过了,具体要看自己怎么操作了…
#12
这么大的数据,导入导出
#13
去看看 ETL 方面的资料或许有用 方法很多的 可以考虑用别的工具
也可以考虑在原来A上建立分区表 一部分一部分的往新B 里插入 可能一次插入太多 消耗资源太多
也可以考虑在原来A上建立分区表 一部分一部分的往新B 里插入 可能一次插入太多 消耗资源太多
#14
不想导的话就只能批量插入了
#15
怎么没有人提到用sqlldr呢?
#16
就用导入导出。
imp/exp
imp/exp
#17
我只会exp/imp
#18
加hint /*+ append */
#19
alter table b nologging
insert /* +append */ into b select * from a@dblink;
#20
也可以采用exp imp 也很好
#21
这个方法好 直接路径插入
#22
注意回滚段
#23
题外话,设为nologging后最好做一次备份。
#24
insert /* +append */
insert /* +paralle*/
insert bulk into
nolog
insert /* +paralle*/
insert bulk into
nolog
#25
data pump导出,作为外部表加载
#26
SQL> copy from user/pass@tnsname -
> append table_nameb(name1,name2) -
> using select * from tabl_namea
copy from 这个功能据说要去掉了,被exp/imp 取代。不过还是挺好用的,
我导过2、3百万的数据用了 不到十分钟吧。
> append table_nameb(name1,name2) -
> using select * from tabl_namea
copy from 这个功能据说要去掉了,被exp/imp 取代。不过还是挺好用的,
我导过2、3百万的数据用了 不到十分钟吧。
#27
你的数据库要是归档的话,insert会让 闪回空间爆掉,那可是1000w呀,连删除带插入 多少日志,你想想。
最好是导出导入 ,要是想insert就得先把归档关掉 ,你考虑吧 导入导出 是没日志的
最好是导出导入 ,要是想insert就得先把归档关掉 ,你考虑吧 导入导出 是没日志的
#28
直接用ETL工具啊 快多了
#29
我以前做大数据插入(大约5000w):
备份数据,关日志、del索引,插,建索引,检查数据,开日志,ok
备份数据,关日志、del索引,插,建索引,检查数据,开日志,ok
#30
直接用DBLINK Insert预计会有问题D.
小心回滚段和日志文件.建议用exp/imp.
小心回滚段和日志文件.建议用exp/imp.
#31
这个顶一下,我就是经常用这个。另外楼主的服务器A 和服务器B如果一样(里面的表索引等一系列对象)的话,可以试一下这两个命令
expdp impdp 这个速度是相当快的
#32
哇...说实话..我看不懂dblink是什么意思..刚入门的菜鸟..求高手写个事例加速了解谢谢!
#1
通過DBlink直接INSERT
#2
楼主可以换个思路,为什么每次都要删除table2中的数据呢,更新里面的数据不行吗?
两台服务器需要dblink了
可以在table1表中设置触发器,当有更新的时候把数据更新到table2中
两台服务器需要dblink了
可以在table1表中设置触发器,当有更新的时候把数据更新到table2中
#3
直接update速度会快些吗?我先truncate然后insert时,速度很慢,还可能死机。
#4
exp/imp
#5
exp/imp
rename A to B
rename A to B
#6
可以尝试下楼上两位的方法
#7
alter table B nologging ;
insert into B select * from A@dblink where ...;--如果是增量,可以在条件里限制。
commit;
#8
导入导出是可以的,但是太麻烦了,直接进行同步不行嘛?
#9
这事手工做的话,EXP/IMP最好了
如果不是,还是用DBLINK吧
操作放在B上,建一个DBLINK -> A 就可以了
至于性能方面,好像没有具体说到环境、表的设计等其它方面,插入慢,数据量只是参考点之一。
如果不是,还是用DBLINK吧
操作放在B上,建一个DBLINK -> A 就可以了
至于性能方面,好像没有具体说到环境、表的设计等其它方面,插入慢,数据量只是参考点之一。
#10
如果是内网的话dblink也可以,外网最好是exp,压缩后再imp。
#11
该有的方法楼上都已经说过了,具体要看自己怎么操作了…
#12
这么大的数据,导入导出
#13
去看看 ETL 方面的资料或许有用 方法很多的 可以考虑用别的工具
也可以考虑在原来A上建立分区表 一部分一部分的往新B 里插入 可能一次插入太多 消耗资源太多
也可以考虑在原来A上建立分区表 一部分一部分的往新B 里插入 可能一次插入太多 消耗资源太多
#14
不想导的话就只能批量插入了
#15
怎么没有人提到用sqlldr呢?
#16
就用导入导出。
imp/exp
imp/exp
#17
我只会exp/imp
#18
加hint /*+ append */
#19
alter table b nologging
insert /* +append */ into b select * from a@dblink;
#20
也可以采用exp imp 也很好
#21
这个方法好 直接路径插入
#22
注意回滚段
#23
题外话,设为nologging后最好做一次备份。
#24
insert /* +append */
insert /* +paralle*/
insert bulk into
nolog
insert /* +paralle*/
insert bulk into
nolog
#25
data pump导出,作为外部表加载
#26
SQL> copy from user/pass@tnsname -
> append table_nameb(name1,name2) -
> using select * from tabl_namea
copy from 这个功能据说要去掉了,被exp/imp 取代。不过还是挺好用的,
我导过2、3百万的数据用了 不到十分钟吧。
> append table_nameb(name1,name2) -
> using select * from tabl_namea
copy from 这个功能据说要去掉了,被exp/imp 取代。不过还是挺好用的,
我导过2、3百万的数据用了 不到十分钟吧。
#27
你的数据库要是归档的话,insert会让 闪回空间爆掉,那可是1000w呀,连删除带插入 多少日志,你想想。
最好是导出导入 ,要是想insert就得先把归档关掉 ,你考虑吧 导入导出 是没日志的
最好是导出导入 ,要是想insert就得先把归档关掉 ,你考虑吧 导入导出 是没日志的
#28
直接用ETL工具啊 快多了
#29
我以前做大数据插入(大约5000w):
备份数据,关日志、del索引,插,建索引,检查数据,开日志,ok
备份数据,关日志、del索引,插,建索引,检查数据,开日志,ok
#30
直接用DBLINK Insert预计会有问题D.
小心回滚段和日志文件.建议用exp/imp.
小心回滚段和日志文件.建议用exp/imp.
#31
这个顶一下,我就是经常用这个。另外楼主的服务器A 和服务器B如果一样(里面的表索引等一系列对象)的话,可以试一下这两个命令
expdp impdp 这个速度是相当快的
#32
哇...说实话..我看不懂dblink是什么意思..刚入门的菜鸟..求高手写个事例加速了解谢谢!