Posted on 2006-08-04 16:30
五指魅力 阅读(98)
评论(0) 编辑 收藏 引用
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 command的Host时需要十分注意,如果目标Schema和源Schema在同一台服务器上,由执行的Host最好也放在这台服务器上,也即在这台服务器上执行Copy Command,如果目标Schema和源Schema不在同一台服务器上,则可以在目标服务器上执行Copy Command,也可以在源服务器上执行Copy Command,但不要在第三台机器上执行Copy Command。
总之,不要在和Copy Command操作的数据无关的客户端上执行Copy Command.