把一个表的数据保存到另外一个表中,有没有什么高效的处理办法

ywb1973 2008-03-07 05:28:16
类似insert into select from的办法当然是排除的了,因为数据量很大,转储频率也很高
原表中数据需要保留,之后对原表的更新不再反应到新表中,新表之后只有查询操作,不再更新
...全文
220 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
harbey 2008-03-12
  • 打赏
  • 举报
回复
如果表中有clob或者blob字段呢?!
doer_ljy 2008-03-11
  • 打赏
  • 举报
回复
补充一句,效率高低还与你的服务器归档模式有关系。
doer_ljy 2008-03-11
  • 打赏
  • 举报
回复
fenixshadow
不要以偏概全,即使使用了nologging关键字见表,索引有效的话仍然会有很多的redolog产生。
append本身是消除oracle做执行计划的时间对redo的影响貌似不大的,当然他也有助于提高insert 的性能。
ywb1973 2008-03-11
  • 打赏
  • 举报
回复
上网一搜nologging就可以找到很多测试结果,自己也可以试试呀
我之前是不知道关键字该用什么
以前是用informix的,那边叫raw
ywb1973 2008-03-10
  • 打赏
  • 举报
回复
我找了个中表(1000万记录-5GB)测试了一下,exp/imp的方法仅导出就要23分钟,导入我就没有试了
create as的方法速度快一些,不含建索引只需要12分钟,就包含了导出+导入的操作,但是和insert的方式差不多,只是少了手工建表的步骤,但也使我不知道怎么指定表空间
物化视图我上网随便看了一下,首先执行效率不敢保证,其次视图本身对数据更新都是有反映的,我需要是保存某个时点的状态数据,不能随原表的更新而更新,不知道有没可能实现
对于大表操作(1亿条记录以上),我不知道如何避免长事务的发生,以前我在informix下是把表或库改为无日志方式来做的,oracle不知道支持这种方式否,也请指教
问的问题有点多,分数好像给低了一点,我再加点吧,谢谢各位捧场的和帮忙的,谢谢!
凤影 2008-03-10
  • 打赏
  • 举报
回复
不客气,如果你能把测试结果发到这里那就最好了,可以造福后人。
比如: 普通insert insert /*+ append*/ insert /*+ append*/ with nologging CTAS CATS with nologging exp/imp
时间一 二 三 四 五 六
DragonBill 2008-03-10
  • 打赏
  • 举报
回复
用nologing
ywb1973 2008-03-10
  • 打赏
  • 举报
回复
向fenixshadow致谢,非常高兴问题得到真正的解决!!
ppluto 2008-03-10
  • 打赏
  • 举报
回复
mark!
凤影 2008-03-10
  • 打赏
  • 举报
回复
说句不客气的话,楼上大部分都是半桶水,如果不指定nologging,那么还是会生成redo log,即使使用了append也比简单的insert快不多少。

尝试使用exp/imp的,就是试图比oracle聪明。其实这就像cpu明明提供了“加法”的指令你偏偏不用,非要使用“减去负的被减数”来实现加法功能一样,如果会更快那就有鬼了。

ps:
secondLife是一个多人在线游戏,虚拟社区。
凤影 2008-03-10
  • 打赏
  • 举报
回复
1、
create table t NOLOGGING as select * from

2、或者使用Nologging建表以后使用下列语句插入
insert /*+ append */ into select from 


这就是oracle提供的对于大数据量导入的解决方案,如果你尝试比oracle聪明,那我敢保证你会撞墙。

两种做法都不生成redo和undo日志。如果你不清楚这意味着什么,参见:expert one on one oracle: chapter 5
doer_ljy 2008-03-10
  • 打赏
  • 举报
回复
支持bzszp的方案,有效地排除创建记录的复杂程度才是关键。文件读写的IO有一些是必须的,没有办法去优化他的。
再加上tom_cheung提到的的appand关键字应该是很高效了。
不支持使用Exp/imp这样的方式,毕竟让服务器自己做事情要比通过客户端和服务器交互要快得多。
不管你的客户端是否安装在服务器本地。
harbey 2008-03-09
  • 打赏
  • 举报
回复
请问secondeLife是who啊?
qiyousyc 2008-03-08
  • 打赏
  • 举报
回复
最快的办法是
用exp和imp
导入的时候要忽略错误。
凤影 2008-03-08
  • 打赏
  • 举报
回复
楼主这种做法(分开存储,一个用来进行事务操作,一个用来进行查询操作)和secondeLife的做法很像,的确不错。

harbey 2008-03-08
  • 打赏
  • 举报
回复
可以用exp命令把源表导出成一个dmp文件,然后把源表换一个名字,再把exp出去的表再imp进来!!
好象exp/imp命令要快一些~
看这样能否解决问题?
JiangHua0903 2008-03-08
  • 打赏
  • 举报
回复
从需求上考虑,是否使用分区表更好
bzszp 2008-03-07
  • 打赏
  • 举报
回复
如果目的表已经存在,则
删除目的表上的所有索引
停用目的表上的触发器
然后 插入数据
重建索引,恢复触发器
bjt_ 2008-03-07
  • 打赏
  • 举报
回复
自己写个过程
bjt_ 2008-03-07
  • 打赏
  • 举报
回复
自己写个过程
加载更多回复(3)
    目前数据分析已经深入到各个行业中,尤其以Python为工具的数据分析和数据挖掘将越来越流行,但在数据分析和挖掘中,最消耗时间的就是数据处理了,高效数据处理技能已经成为工作中必不可少的技能之一了。熟练掌握和运用Python对数据进行高效处理,可以大大提高数据分析和数据挖掘的效率。    Python数据处理实战: 基于真实场景的数据(Python数据处理和特征工程)作为Python数据清洗实战入门课程的升级版,本课程以真实的场景数据为案例进行教学,包括征信,电商,零售数据等, 本课程由浅入深详细讲解Python数据处理和特征工程在真实项目中的运用, 本课程专门针对想深入学习Python数据处理而量身定做的课程,是讲师在多年真实项目和实践工作的总结,涵盖实际项目中主要的知识点,内容详尽,代码可读性及实操性强。     掌握好数据处理和特征工程,有利于今后从事或者转行数据分析或者数据挖掘,以及解决工作和项目中遇到的各种数据处理问题。课程目标:1.熟悉数据处理的流程和方法 2.熟练掌握pandas和numpy的运用 3.举一反三,能够独立完成数据分析中数据处理阶段的任务 4.提高数据处理能力,在项目中能够事半功倍课程定位: 1.   零基础学员或者有一定基础学员、大中院校学生;2.   在职从事数据分析相关工作以及打算转行Python数据分析人员; 3.   对Python有兴趣人群。 课程特色   1.   相关代码老师课堂上全部打出,方便理解和记忆;   2.   提供源代码和数据方便同学们预习和复习;   3.   使用真实的数据进行教学,紧贴实战,避免枯燥的理论;   4.   在教学过程中,尽可能多的使用图教学;  5.    每一个章节后面都配有相关练习题目以及习题答案,方便同学们进行自我测试。 课程学习环境: Python3.7版本 讲师介绍:    Peter, 某科技公司高级量化分析师,金融数学硕士毕业,擅长数据分析和数据挖掘,在公司长期从事机器学习建模,拥有多家银行,消费金融和互联网金融风控建模经验。熟练掌握Python编程软件和数据库等软件.

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧