ITPub博客

首页 > 数据库 > Oracle > copy 命令(转载)

copy 命令(转载)

原创 Oracle 作者:October-1984 时间:2007-04-22 19:02:01 0 删除 编辑

使用SQL*Plus的COPY命令,可以在数据库间进行数据复制。

1、将一个远程数据库的数据复制到本地数据库

............................................

[@more@]

SQL> help copy

COPY
----

COPY copies data from a query to a table in a local or remote
database. COPY supports CHAR, DATE, LONG, NUMBER and VARCHAR2.

COPY {FROM database | TO database | FROM database TO database}
{APPEND|CREATE|INSERT|REPLACE} destination_table
[(column, column, column, ...)] USING query

where database has the following syntax:
username[/password]@connect_identifier

使用SQL*Plus的COPY命令,可以在数据库间进行数据复制。

1、将一个远程数据库的数据复制到本地数据库

2、将本地数据库的数据复制到远程数据库

3、将一个远程数据库的数据复制到另一个远程数据库

一般情况下,我们都会登陆一个数据库,然后从另一个数据库中拷贝数据。

SQL>copy from scott/tiger@orcl -

replace emp -

using select * from emp;

注:COPY语句中使用了“-”符号,这是续行符。

对于 {APPEND|CREATE|INSERT|REPLACE}这几个选项,一般推荐使用replace,为什么呢?

因为在目标表不存在的情况下,它就create,如果目标表存在的情况下,它会先删掉旧表,然后创建新表。

当然,要根据自己实际的需要来选择不同的选项。

在不同数据库之间复制数据,我一般选择ctas的方式。两种方法,哪一个效率比较高,这个我没有比较过。不过,COPY有一个特点是CTAS无法比拟的。用CTAS的话,一定要在本地数据库上有链接远程数据库的数据库链接,而COPY就没有这个限制了。

通过实践比较,发现COPY的效率跟CTAS的效率不是在一个层次上的!CTAS只有几十秒就行了,而COPY却要好几分钟!

在执行COPY命令时,可以看到如下语句:

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

其实,arraysize,copycommit,long都是可以设置的参数,把这些参数设大一点,对效率有一定的提高。

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

上一篇: 没有了~
请登录后发表评论 登录
全部评论
  • 博文量
    2
  • 访问量
    1258