oracle里如何将一张表的数据导入另外一张表?

h54068650 2011-07-01 01:54:37
我现在需要做一个功能,在oracle里把一张表里的数据导入到另外一张表(2个表的字段不一样),请问各位,如何实现?写存储过程吗?还是???
...全文
1705 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
h54068650 2011-07-05
  • 打赏
  • 举报
回复
难道没有其他办法了吗?
ArayChou 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 h54068650 的回复:]
insert into B(字段) values (select 字段 from A )
这样行吗?100W条左右的数据,这得需要多久?
[/Quote]

这样肯定行,且是最好的方法,没有比他更简单更高效的了.

如果要更快,加上nologging关键字

需要的时间不好判断,这条sql语句的瓶颈在于IO. 要看你这100W条数据到底有多少字节,还有你的存储设备速度多快.
DavidChou 2011-07-04
  • 打赏
  • 举报
回复
insert into tab(a,b,c) select a,b,c from tab2.....
h54068650 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 viszl 的回复:]

引用 16 楼 h54068650 的回复:

直接路径加载?大哥们,麻烦说清楚一点可以吗?

你可以查一下sqlldr
是一种高速批量数据加载工具,有两种模式,传统路径使用用sql插入,直接路径可以直接格式化数据库快,绕过sql引擎,不产生undo信息,甚至redo
[/Quote]
我这个是直接在PL/SQL中执行的,JDBC。。。
h54068650 2011-07-04
  • 打赏
  • 举报
回复
谢谢19楼火龙果大大的建议。
比如说,我有A,B2张表,A表里有ID(int),name(varchar2),age(int)3个字段,这个表里面有100多W条数据,B表里有ID(int),name(varchar2),age(int),sex(char),adddate(date),operator(varchar2)6个字段,现在需要把表A的数据全部导入到表B里面,2张表只有ID为序列主键,其他字段均可为空。请问大家有什么好的方法没有?insert select除了这一种之外?
安心逍遥 2011-07-04
  • 打赏
  • 举报
回复
貌似复制粘贴都可以完成啊
Spring源码解析 2011-07-01
  • 打赏
  • 举报
回复
字段不一样也行吗 用insert select
  • 打赏
  • 举报
回复
不一样的话,那不同的字段填充什么数据?这些字段是否可为空?

建议提问题之前看一下:

提问的慧
http://community.csdn.net/IndexPage/SmartQuestion.aspx
loveofmylife 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 h54068650 的回复:]

直接路径加载?大哥们,麻烦说清楚一点可以吗?
[/Quote]
你可以查一下sqlldr
是一种高速批量数据加载工具,有两种模式,传统路径使用用sql插入,直接路径可以直接格式化数据库快,绕过sql引擎,不产生undo信息,甚至redo
loveofmylife 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 h54068650 的回复:]

求哪位大神教写存储过程~
[/Quote]

单纯的100W数据插入不用使用存储过程,没意义,jdbc中提供的批量更新的api,和存储过程中使用forall语句批量更新是一样的
h54068650 2011-07-01
  • 打赏
  • 举报
回复
直接路径加载?大哥们,麻烦说清楚一点可以吗?
loveofmylife 2011-07-01
  • 打赏
  • 举报
回复
100W数据对ORACLE来说很快就能插入的,一般不会引入什么性能问题(当然不考虑表类型索引等因素的影响)
想要更快一点就可以使用使用直接路径加载,使用批量插入
h54068650 2011-07-01
  • 打赏
  • 举报
回复
求哪位大神教写存储过程~
xianaofei 2011-07-01
  • 打赏
  • 举报
回复
insert into B(字段) values (select 字段 from A )
你或者用export
zn85600301 2011-07-01
  • 打赏
  • 举报
回复
这个要提升性能也就只能写存储过程了

100W的数据量一般的机子还是能抗住的

如果数据量再大的话 估计就得考虑使用ETL工具了
h54068650 2011-07-01
  • 打赏
  • 举报
回复
我说的字段不一样是,A表可能比B表多字段,也可能少字段,也有可能字段类型不一样~
而且估计的跑1个小时吧!
carnation1985 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 h54068650 的回复:]
但是我现在要做的是A表和B表的字段不一样 - -!
坐等大神求解决~
[/Quote]
字段类型不一样,就在select 字段 from A语句中,把字段转换成和B表一样的类型
Seady 2011-07-01
  • 打赏
  • 举报
回复
你本机跑回很慢,100W的数据量,可能要那么几个小时吧
h54068650 2011-07-01
  • 打赏
  • 举报
回复
但是我现在要做的是A表和B表的字段不一样 - -!
坐等大神求解决~
carnation1985 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 h54068650 的回复:]
insert into B(字段) values (select 字段 from A )
这样行吗?100W条左右的数据,这得需要多久?
[/Quote]

行,A 表 和 B表 相对应的字段类型要一样
加载更多回复(6)

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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