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