SQL * Plus Copy 命令

本文详细介绍了如何使用SQL*Plus中的Copy命令在不同的数据库之间进行数据复制,包括本地数据库和远程数据库。文章解释了Copy命令的基本格式及支持的数据类型,并通过实例展示了从远程数据库复制数据到本地数据库、在同一个数据库内不同模式间复制表等多种应用场景。
问题2SQL*Plus Copy 命令
问题描述
怎样在SQL*Plus 中实现不同的表之间的数据复制,不论是本地的还是远程
的?
问题分析
在SQL*Plus 中的copy 命令,可以完成远程数据库、本地数据库或Oracle 数据
库与非Oracle 数据库之间的数据复制。其性能与导入/导出相同。
copy 的基本命令格式:
copy {from source_database |to destination_database}
{append|create|insert|replace}destination_table[(column,column,column,...)]
using
其中数据库连接使用如下格式:
username/password\]@connect_identifier
在数据复制时,复制支持的数据类型为:char、date、long、number、varchar2。
原理如图3-9 所示。
图3-9 SQL*Plus Copy 原理图
SQL*Plus Copy 命令可在不同数据库之间,以及同一个数据库内的不同模式
的表之间复制数据。
  ·从远程数据库复制数据到本地数据库。
  ·从本地数据库(默认)复制数据到远程数据库。
  ·从一个远程数据库复制数据到另一个远程数据库。
通常,copy 命令用于Oracle 数据库与非Oracle 数据库之间复制数据。如果在
Oracle 数据库之间复制数据,应该使用create table as 和insert 的SQL 命令。
·对目标表的控制方式有4 种类型:replace、create、insert 和append。
  ·replace 子句指定了被创建的表名。如果目标表已存在,则删除并用包含复制
数据的表替代。若不存在,则创建目标表。
  ·使用create 子句可避免覆盖已存在的表。若目标表已存在,则copy 报告一个
错误;若不存在,则创建目标表。
  ·insert 插入数据到已存在的表。
将查询到的行插入到目标表,如果目标表不存在,copy 返回错误。当使用insert
时,using 子句必须为目标表的每个列选择对应的列。
  ·append 是将查询到的行插入到目标表。如果不存在,则创建目标表并插入。
问题解答
首先应注意的是:1)copy 是SQL*Plus 命令,不是SQL 命令,在语句最后不
必加分号;2)由于多数copy 命令比较长,所以,在分行时每行末尾必须有续行
符(-),最后一行不加。
具体步骤如下。
步骤1:使用using 子句指定一个查询,将其查询结果数据复制到本地数据库
的当前模式下employee 表中。例如:
copy from hr/hrd@renshreplace
employeeusing
select last_name,salaryfrom
emp_details_viewwhere
department_id=30
步骤2:使用create 从一个远程数据库复制数据到本地数据库。
copy from hr/@bostondbcreate
empcopyusing
select*from hr
步骤3:为其他用户复制数据。
copy from hr/hr@dboracreate
jobusing
select*from renbs.jobs
以用户hr 连接到数据库dbora,将renbs 模式的jobs 表复制到当前本地数据库。
步骤4:在同一个数据库中可将一个模式的表复制到另一个模式中。同样必须
指定用户口令和数据库服务名。
copy from hr/password@mydatabaseinsert
employee_copy2-
using select*from employee_copy
步骤5:在同一个远程数据库中复制表,必须是关键字from 和to 中包含相同
用户名和数据库服务名。
copy from hr/password@daliandbto
hr/password@daliandbinsert
employee_copy2-
using select*from employee_copy

 

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

转载于:http://blog.itpub.net/35489/viewspace-410093/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值