ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORACLE表结构及数据复制,MS_SQL与ORACLE的数据复制的区别

ORACLE表结构及数据复制,MS_SQL与ORACLE的数据复制的区别

原创 Linux操作系统 作者:amcaesar 时间:2013-04-17 10:02:11 0 删除 编辑

一: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;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14509787/viewspace-758660/,如需转载,请注明出处,否则将追究法律责任。

下一篇: SQL中N $ # @的作用
请登录后发表评论 登录
全部评论

注册时间:2012-06-18

  • 博文量
    5
  • 访问量
    16875