设为首页 收藏本站
查看: 757|回复: 0

[经验分享] ORACLE表结构及数据复制,MS_SQL与ORACLE的数据复制的区别 (转载)

[复制链接]
YunVN网友  发表于 2016-8-15 06:24:46 |阅读模式
一:ORACLE表结构及数据的复制
1. 复制表结构及其数据:
create table TAB_NEW as select * from TAB_OLD

2. 只复制表结构:
create table TAB_NEW as select * from TAB_OLD where 1=2;
或者:
create table TAB_NEW like TAB_OLD

3. 只复制表数据:
如果两个表结构一样:
insert into TAB_NEW select * from TAB_OLD
如果两个表结构不一样:
insert into TAB_NEW (column1,column2...) select column1,column2... from TAB_OLD
二:MS_SQL与ORACLE的区别:

1.库内数据复制
MS SQL Server:
Insert into TAB_NEW  select *** (TAB EXIST)
select COLS into TAB_NEW   from TAB_OLD (TAB NOT EXIST)
Oracle :
Insert into TAB_NEW  select *** (TAB EXIST)
create table TAB_NEW as select *** (TAB NOT EXIST)

2.库内数据更新:
MS SQL Server
update TAB_A SET COL_1=TAB_B_COL1,COL_2=TAB_B_COL2 from TAB_B WHERE ***
Oracle
update TAB_A  SET COL_1=(select COL1 from B WHERE ...),COL_2=(select COL2  from B WHERE ...)

3.ORACLE 数据导出
exp ff/ff@orcl file='d:ff.dmp' tables=customers direct=y

使用exp 输出。输入的为需要备份的用户表的账号和密码,根据提示一直点回车就OK 结束后将会出现一个ff.DMP文件,此文件为备份数据。
导出时可以选择导出:1.整个数据库(需具备dba权限);2.用户(包括表、视图和其它);3.表(只包含表,不导出视图);

4.ORACLE 数据导入
create user U1 identified by pw default tablespace users quota 10M on users;
创建新用户 用户名为U1 密码为pw 默认表空间为此空间,配额为10M

grant connect,resource,dba to U1 ;
赋予U1 权限(1.连接;2.资源;3.dba权限,必须具备才能执行导入!)

grant create session,create table,create view,unlimited tablespaces to U1 ;
赋予U1 其它常用权限(1.登陆到服务器,2.创建表,3.创建视图,4.无限表空间)

imp U1 /PW@ORCL from user=ff to user=U1  file='d:ff.dmp' constraints=n
使用 imp 输入。输入需要导入的用户的用户名和密码 然后点回车,根据提示一直到再次要求你输入用户名的地方。

三.不同库之间数据表的复制:
1.MS SQL 不同数据库间复制表 不同数据库表结构 和数据的复制 : :

xuexiao为目标数据库,teaching为源数据库,dbo.course_list已经存在于teaching,想在没有此表的xuexiao库中复制一个用下面的语句完成:
select * into xuexiao.dbo.course_list from teaching.dbo.course_list

2.不同数据库之间复制表的数据的方法
目标表存在时:
insert into DB2.TAB1 select * from DB1.TAB1
目标表不存在时:
select * into DB2.TAB1 from DB1.TAB1

3. EXAMPLE
表a是数据库中已经存在的表,b是准备根据表a进行复制创建的表:
  1、只复制表结构的sql
  create table b as select * from a where 1<>1
  2、即复制表结构又复制表中数据的sql
  create table b as select * from a
  3、复制表的制定字段的sql
  create table b as select row_id,name,age from a where 1<>1//前提是row_id,name,age都是a表的列
  4、复制表的指定字段及这些指定字段的数据的sql
  create table b as select row_id,name,age from a
  以上语句虽然能够很容易的根据a表结构复制创建b表,但是a表的索引等却复制不了,需要在b中手动建立。
  5、insert into 会将查询结果保存到已经存在的表中
  insert into t2(column1, column2, ....) select column1, column2, .... from t1

四:OTHERS
获得单个表和索引DDL语句:
set   heading   off;
set   echo   off;
Set   pages   999;
set   long   90000;
spool   get_single.sql
select   dbms_metadata.get_ddl( 'TABLE ', 'SZT_PQSO2 ', 'SHQSYS ')   from   dual;
select   dbms_metadata.get_ddl( 'INDEX ', 'INDXX_PQZJYW ', 'SHQSYS ')   from   dual;
spool   off;

本文转载自http://blog.itpub.net/14509787/viewspace-758660/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-257712-1-1.html 上篇帖子: [转]在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL 下篇帖子: Oracle Grid control 11g及Active DataGuard 11g安装部署(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表