SQLPLUS工具的COPY功能实现表数据的复制或迁移

2014-11-24 14:47:42 · 作者: · 浏览: 0

通常表数据迁移功能可以通过CTAS(create table as select...),exp/imp,expdp/impdp,sqlldr等工具来实现,今天介绍一下SQLPLUS工具自带COPY功能,也可以便捷地实现以下表数据的复制功能:

1. 相同数据库但不同用户间的表数据复制

2. 相同数据库但相同用户中不同表数据的复制

3. 不同数据库间,相同或不同用户间的表数据库复制

COPY语法:

\

可见,COPY只支持常用的数据类型,并且也不会有新的数据类型被支持。

以下再看看APPEND,CREATE,INSERT,REPACE的区别:

\

以下做一下最简单的示范:

COPY功能不支持sysdba和sysoper角色的用户操作,所以新建测试用户来做实验:

实现功能,用户U1与有T1表(列名为col1,col2,col3),通过COPY功能,把表数据复制至用户U2下的T2表(列名为c1,c2,c3)

SQL> create user u1 account unlock identified by u1;

User created.

SQL> grant connect,resource to u1;

Grant succeeded.

SQL> create user u2 account unlock identified by u2;	

User created.

SQL> grant connect,resource to u2;

Grant succeeded.

SQL> connect u1/u1@ora10g
Connected.
SQL> create table t1 (col1 number,col2 varchar2(10),col3 date);

Table created.

SQL> insert into t1 values(1,'r1',sysdate);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t1;

      COL1 COL2 			  COL3
---------- ------------------------------ ---------------
	 1 r1				  27-SEP-14

SQL> copy from u1/u1@ora10g to u2/u2@ora10g create t2(c1,c2,c3) using select * from t1;

Array fetch/bind size is 15. (arraysize is 15)
Will commit when done. (copycommit is 0)
Maximum long size is 80. (long is 80)
Table T2 created.

   1 rows selected from u1@ora10g.
   1 rows inserted into T2.
   1 rows committed into T2 at u2@ora10g.

SQL> connect u2/u2@ora10g
Connected.
SQL> desc t2;
 Name					   Null     Type
 ----------------------------------------- -------- ----------------------------
 C1						    NUMBER(38)
 C2						    VARCHAR2(10)
 C3						    DATE

SQL> select * from t2;

	C1 C2				  C3
---------- ------------------------------ ---------------
	 1 r1				  27-SEP-14   

-------------------------------------------------------------------------------------------------

本文来自于我的技术博客 http://blog.csdn.net/robo23

转载请标注源文链接,否则追究法律责任!