※天道酬勤※

§水至清则无鱼,人至察则无徒§
posts - 65, comments - 11, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
1. 语法及使用说明

我们必须要明确 SQL*Plus Copy Command 不是一个方法或是函数,也不是一个 SQL 语句,它是一个命令 (command) ,当然这个命令必须在 SQL*Plus 里运行。

SQL*Plus Copy Command 的语法:
COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)]

USING query

COPY
主命令,声明要执行 COPY 操作

From Database
源数据库
To Database
目标数据库
此处注意花括号中有三种可选的写法
( ”|” 隔开 ) ,如果源数据表和目标数据表在同一个 Schema 中,则可以只写 From Database ,也可以只写 To Database ,当然还可以是第三种写法,把 From Database To Database 写全。但如果源数据表和目标数据表不在同一个 Schema 中,则必须用第三种写法,即把 From Database To Database 都写全
From Database
To Database 的格式是一样的: USERID/PASSWORD@SID ,这个大家都应该很熟悉了。

{APPEND|CREATE|INSERT|REPLACE}
声明操作数据的方式,下面分别解释一下:
Append – 向已有的目标表中追加记录,如果目标表不存在,自动创建,这种情况下和
Create等效。
Create
创建目标表并且向其中追加记录,如果目标表已经存在,则会返回错误。
Insert – 向已有的目标表中插入记录,与
Append不同的是,如果目标表不存在,不自动创建而是返回错误。
Replace
用查询出来的数据覆盖已有的目标表中的数据,如果目标表不存在,自动创建。

destination_table
目标表的名字
[(column, column, column, ...)] – 可以指定目标表中列的名字,如果不指定,则自动使用
Query中的列名。
USING query – 查询语句,交流的数据来自这儿

2. 使用范例
SQL> copy from scott/tiger@lsj to scott/tiger@lsj create dept1 using select * from dept;
SQL> copy from scott/tiger@lsj create dept2 using select * from dept;
SQL> copy to scott/tiger@lsj create dept3 using select * from dept;
SQL> copy from scott/tiger@lsj to lsjdemo/lsjdemo@lsj create dept using select * from dept;

3.性能比较
执行速度:Create table … as select …>Copy Command>Insert into … select … from …

4.Copy Command的一些其他说明
Copy Command只支持如下几种类型的字段:

CHAR ,DATE ,LONG ,NUMBER ,VARCHAR2

选择执行Copy commandHost时需要十分注意,如果目标Schema和源Schema在同一台服务器上,由执行的Host最好也放在这台服务器上,也即在这台服务器上执行Copy Command,如果目标Schema和源Schema不在同一台服务器上,则可以在目标服务器上执行Copy Command,也可以在源服务器上执行Copy Command,但不要在第三台机器上执行Copy Command

总之,不要在和Copy Command操作的数据无关的客户端上执行Copy Command.






只有注册用户登录后才能发表评论。