Copy命令可以实现不同Oracle数据库间的数据的复制,也是可以实现同一数据库的数据复制,其性能表现和导入/导出相同。

根据9i文档,说Copy命令未来会不支持,但实际上Oracle 11g仍然支持Copy命令,只是未写入11g的文档里,未来12C不知道还支不支持。

Copy也有明显的缺点,Copy只支持五种数据类型,Char,Date,Long,Number,Varchar2,8i之后Oracle数据库新增的数据类型都不支持。

使用方法:

1.首先确保TNS里记录了源Instance和目标Instance的连接信息;

2.运行SQL * Plus(无需连接具体的Instance)

sqlplus /nolog

3.运行Copy命令

Copy命令的语法:

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

Copies data from a query to a table in a local or remote database. COPY
supports the following datatypes:

CHAR

DATE

LONG

NUMBER

VARCHAR2

Example:

  1. copy from user1/password1@source_instance to user2/password2@dest_instance create emp2 using select * from emp;

上边的命令会从source_instance中把emp数据拷贝到dest_instance中的emp2表。

数据库内的复制,也可以使用Copy命令,Example:

  1. copy from scott/password@ptian to scott/password@ptian create emp2 using select * from emp;

这就有点类似于CREATE TABLE empx AS (SELECT * FROM emp);
根据Tom的说法,Copy 的效率可能会比CREATE TABLE ... AS ...(数据库间的复制也可以使用Create table...as,通过database Link)差,因为Copy是把数据从一个Instance拷贝到sqlplus,再从sqlplus插入另外一个Instance。

而CREATE TABLE ... AS ...是把一个数据库的数据直接插入到第二个数据库,所以效率会高一些。

Copy 命令的四种模式

* replace子句指定了被创建的表名。如果目标表已存在,则删除并用包含复制数据的表替代。若不存在,则创建目标表。
* 使用create子句可避免覆盖已存在的表。若目标表已存在,则copy报告一个错误;若不存在,则创建目标表。
* insert插入数据到已存在的表。将查询到的行插入到目标表,如果目标表不存在,copy返回错误。当使用insert时,using子句必须为目标表的每个列选择对应的列。
* append是将查询到的行插入到目标表。如果不存在,则创建目标表并插入。

其他说明

如果copy命令比较长,可以在分行时每行末尾必须有续行符(-),最后一行不加。

    1. copy from scott/welcome@ptian -
    2. to scott/welcome@ptian-
    3. create empy-
    4. using select * from emp-
    5. where rownum = 1

Oracle数据库间的数据复制 - SQLPlus中的COPY命令的更多相关文章

  1. 使用exp/imp 在oracle数据库间导数据

    最近工作需要将oracle数据库的表数据导出到另一个oracle数据库表,找到了oracle 自带的命令行,并记录下导数据过程. 导数据过程分以下几步: 假设源数据库为A,目标数据库为B 1.在B上通 ...

  2. oracle用户间表数据复制迁移

    如system用户要将scott中的emp表倒入其中,按如下方法: 1.登录scott用户 2.给system用户赋予查询emp标的权限: grant select on emp to system; ...

  3. oracle数据库误删的表以及表中记录的恢复

    oracle数据库误删的表以及表中记录的恢复 一.表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有: --1.从flash bac ...

  4. 160316、实时处理oracle数据库中表的数据变化

    http://blog.csdn.net/as339000204/article/details/45390727     近期接受项目需求,需要实时处理oracle数据库中表的数据变化,首先想到的是 ...

  5. Oracle数据库四种数据完整性约束

     Oracle数据库四种数据完整性约束 1.实体完整性 同样的数据不能重复插入(1)采取什么措施保证实体完整性?我们可以给表创建主键约束吗,主键保证了数据的唯一性,主键可以保证同一条记录只能插入一次. ...

  6. c#用log4Net将日志写入到Oracle数据库,并写入到文件中

    原文:c#用log4Net将日志写入到Oracle数据库,并写入到文件中 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...

  7. Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)

    <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...

  8. Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)

    <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...

  9. ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理

    ABP框架的数据访问底层是基于EFCore(Entity Framework Core)的,是微软标志性且成熟的ORM,因此它本身是支持多种主流数据库MySQL,SqlServer,Oracle,SQ ...

随机推荐

  1. Linux中的crontab命令用法

    Crontab 在linux中,crontab的用来设置定期执行指定的命令,我们可以用它来指定一些需要重复的事情,Linux系统的用户只需将想要定期要执行的命令序列加到crontab文件中,操作系统即 ...

  2. Adobe Edge Animate –获取鼠标位置及跟随鼠标功能实现

    Adobe Edge Animate –获取鼠标位置及跟随鼠标功能实现 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权和原文地址. 在网络上浏览有关Edge相关问题的时 ...

  3. java的回忆录

    封装的三步骤:(1)加属性(成员变量.全局变量.域field)用private来修饰(2)为对应的属性生成共有的setter.getter方法(3)在对应的setter的方法中可以根据需要加入对应的验 ...

  4. Spring(3.2.3) - Beans(3): Bean 实例的创建方式

    创建一个 Bean 实例对象的方法通常有如下方式: 调用构造器创建 Bean 实例 调用静态工厂方法创建 Bean 实例 调用实例工厂方法创建 Bean 实例 使用构造器创建 Bean 实例 XML ...

  5. SVN对unity3d项目版本进行管理的不方便问题,研究ing

    unity3d项目版本控制遇到些问题,找了以下资料做参考,现在mark一下,以后慢慢解决,之后总结. Unity开启meta. meta:版本控制文件,在新加入项时,Unity3D会产生一个同名的.m ...

  6. Android学习之——图形图像处理(Bitmap、BitmapFactory)(一)

    转载自http://blog.csdn.net/csxwc/article/details/10345235 Bitmap是Android系统中的图像处理的最重要的类之一.用它可以获取图像文件信息,对 ...

  7. money 转换成 varchar

    Sql :cast(sum(colname) as varchar) 或者 convert(varchar,sum(colname)) ),sum(colname))

  8. Javascript之spry菜单栏

    我没有添加任何东西,这是Dreamweaver原汁原味用spry创建的菜单栏,以此来学习菜单导航,哈哈. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...

  9. 检测SqlServer服务器内存是否瓶颈

    性能监视器临视以下数据: Memory->Available MBytes  可用的内存  windows系统不低于1G,如果可用内存不多,则系统要求sqlserver释放内存 Paging F ...

  10. android输入框显示在软键盘上边

    有时候在界面需要输入的时候,如果输入框在界面的下方,软键盘弹出的时候会遮挡输入框界面,对用户的体验不是很好. 在网上找的别人的解决方案 首先: 清单文件里面配置:android:windowSoftI ...