当前位置:  数据库>oracle

SQL*Plus copy 命令处理大批量数据复制

    来源: 互联网  发布时间:2017-05-20

    本文导语: 对于数据库表级上的数据复制,我们最常用的是CREATE TABLE AS(CTAS)..方式。其实在SQL*Plus下面copy命令可以完成同样的工作,而且更加出色,性能也比较优异。更突出的是支持跨平台,异构数据库之间的数据复制。copy命令可以类似地...

对于数据库表级上的数据复制,我们最常用的是CREATE TABLE AS(CTAS)..方式。其实在SQL*Plus下面copy命令可以完成同样的工作,而且更加出色,性能也比较优异。更突出的是支持跨平台,异构数据库之间的数据复制。copy命令可以类似地完成一些stream完成的功能,尽管copy命令与stream方式不是一个重量级。下面描述copy命令的主要用法。

1、copy命令的帮助信息

scott@SYBO2SZ> help copy

 COPY
 ----

 Copies data from a query to a table in the same or another
 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

上面列出了copy支持的数据类型以及copy命令的用法
from database 子句指定连接的源数据库,如果省略则为当前连接的数据库
to database子句指定连接的目的数据库,如果省略则为当前数据库
from database TO database 同时指定了连接的原数据库以及目的数据库
支持几种不同的表间数据复制方式:APPEND|CREATE|INSERT|REPLACE
支持跨Oracle版本,不同schema之间,相同schema之间的数据复制
支持异构数据库间的数据复制,如Oracle到非Oracle数据库
支持Oracle跨平台间的数据库复制,如windows平到到linux平台
支持本地数据库到远程数据库,远程数据库到本地,远程数据库到另一个远程数据库之间数据复制
复制数据时,使用Oracle net来传输数据

2、同一数据库相同schema之间数据复制

--create 方式,仅指定from子句
--注,下面的示例中,符号"-"表示是连接符号,用于换行书写
scott@SYBO2SZ> copy from scott/tiger@sybo2sz -
> create tb_emp -
> using select * from emp;

Array fetch/bind size is 2000. (arraysize is 2000)
Will commit when done. (copycommit is 0)
Maximum long size is 5000. (long is 5000)
Table TB_EMP created.

  14 rows selected from scott@sybo2sz.
  14 rows inserted into TB_EMP.
  14 rows committed into TB_EMP at DEFAULT HOST connection.

--append方式,仅指定to子句
scott@SYBO2SZ> copy to scott/tiger@sybo2sz -
> append tb_emp -
> using select * from emp;

Array fetch/bind size is 2000. (arraysize is 2000)
Will commit when done. (copycommit is 0)
Maximum long size is 5000. (long is 5000)
  14 rows selected from DEFAULT HOST connection.
  14 rows inserted into TB_EMP.
  14 rows committed into TB_EMP at scott@sybo2sz.

scott@SYBO2SZ> select count(*) from tb_emp;

  COUNT(*)
----------
        28

--insert 方式
scott@SYBO2SZ> copy from scott/tiger@sybo2sz -
> insert tb_emp2 using select * from emp where deptno=20;

Array fetch/bind size is 2000. (arraysize is 2000)
Will commit when done. (copycommit is 0)
Maximum long size is 5000. (long is 5000)
  5 rows selected from scott@sybo2sz.
  5 rows inserted into TB_EMP2.
  5 rows committed into TB_EMP2 at DEFAULT HOST connection.

--replace方式,上一次试验得到的表记录数为5,使用replace后记录数为14,如下,
scott@SYBO2SZ> copy from scott/tiger@sybo2sz -
> replace tb_emp2 using select * from emp;

Array fetch/bind size is 2000. (arraysize is 2000)
Will commit when done. (copycommit is 0)
Maximum long size is 5000. (long is 5000)
Table TB_EMP2 dropped.

Table TB_EMP2 created.

  14 rows selected from scott@sybo2sz.
  14 rows inserted into TB_EMP2.
  14 rows committed into TB_EMP2 at DEFAULT HOST connection.

--使用列别名的方式
--下面使用了列别名,且只复制其中的几列数据
scott@SYBO2SZ> copy from scott/tiger@sybo2sz -
> replace tb_emp2(eno,name,job_name) using select empno,ename,job from emp;

Array fetch/bind size is 2000. (arraysize is 2000)
Will commit when done. (copycommit is 0)
Maximum long size is 5000. (long is 5000)
Table TB_EMP2 dropped.

Table TB_EMP2 created.

  14 rows selected from scott@sybo2sz.
  14 rows inserted into TB_EMP2.
  14 rows committed into TB_EMP2 at DEFAULT HOST connection.


    
 
 

您可能感兴趣的文章:

  • t-sql/mssql用命令行导入数据脚本的SQL语句示例
  • 基于命令行的SQL客户端 SqlShell
  • SQL Server利用bcp命令把SQL语句结果生成文本文件
  • SQLServer中用T—SQL命令查询一个数据库中有哪些表的sql语句
  • Mysql命令行导入sql数据
  • sql语言中delete删除命令语句详解
  • sql server停止与重启命令
  • 如何编写Shell,当SQL执行完毕后,继续调用Shell命令。
  • Oracle中备份表的简单sql命令语句
  • C处理SQL命令字符串的函数哪里有?
  • mysql source 命令导入大的sql文件的方法
  • SQL建立数据库及删除数据库命令
  • SQL 提权 常用命令
  • Mysql命令行导入sql数据的代码
  • SQLServer用t-sql命令批量删除数据库中指定表(游标循环删除)
  • 在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)
  • 如何用SQL命令查看Mysql数据库大小
  • 为什么这个sql命令没有正确结束
  • mysql命令行还原phpMyAdmin导出的含有中文的SQL文件
  • 在SQL Server中使用命令调用SSIS包的具体方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • sql数据库中复制表结构与复制表数据
  • sql server 复制路径出问题的解决方法
  • SQL Server复制功能要避开缺陷的干扰小结
  • SQL Server中的数据复制到的Access中的函数
  • sql lite 数据库之间表复制的方法
  • sql复制表结构和数据的实现方法
  • SQL Server 复制需要有实际的服务器名称才能连接到服务器
  • 将数据库某一个表的几行复制到另一个表,应该用怎样的sql语句(java jdbc)(急)
  • SQL Server的复制功能
  • MySQL复制表结构和内容到另一张表中的SQL语句
  • SQL高级应用之同服务器上复制表到另一数据库中并实现去重复
  • jb6:SQL SERVER 中记录的提取,复制问题?
  • mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法
  • [图文]三分钟学会Sql Server的复制功能
  • sql server 复制表从一个数据库到另一个数据库
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • java命名空间java.sql接口rowid的类成员方法: tostring定义及介绍
  • SQL客户端管理工具 SQuirreL SQL Client
  • java命名空间javax.sql.rowset接口joinrowset的类成员方法: getwhereclause定义及介绍
  • 如何处理此错误:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有执行可选特性


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,