Oracle Copy From命令

一 用途

Copy 命令是SQL*Plus命令,可用于在ORACLE数据库、非ORACLE数据库之间数据的传输。

二 语法结构

SQL> copy

usage: COPY FROM <db> TO <db> <opt> <table> { (<cols>) } USING <sel>

<db> : database string, e.g., hr/your_password@d:chicago-mktg

<opt> : ONE of the keywords: APPEND, CREATE, INSERT or REPLACE

<table>: name of the destination table

<cols> : a comma-separated list of destination column aliases

<sel> : any valid SQL SELECT statement

A missing FROM or TO clause uses the current SQL*Plus connection.

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

1 语法说明:

1)FROM database

需要Copy数据的数据库,即源数据库,如果忽略该子句,源库默认为正在连接的数据库,如果连接远端数据库,必须指定该子句,不支持SYSDBA或SYSOPER权限进行连接;

2)TO database

包含目标表的数据库,即目标库,如果忽略该子句,目标库默认为正在连接的数据库,如果连接远端数据库,必须指定该子句,不支持SYSDBA或SYSOPER权限进行连接;

3)database

username[/password]@connect_identifier;

4)APPEND

如果目标表存在,将查询的数据行插入目标表,若目标表不存在,创建表并插入数据行;

5)CREATE

如果目标表不存在,创建目标表,并插入数据行,如果目标表存在,返回错误;

6)INSERT

如果目标表存在,将查询的数据行插入目标表,若目标表不存在,返回错误;

7)REPLACE

如果目标表存在,删除表并创建表,插入数据,如果目标表不存在,创建表,插入数据;

8)destination_table

目标表;

9)(column, column, column, ...)

指定目标表的列名;

10)USING query

指定查询语句,决定Copy的行和列;

2 支持的数据类型

Copy指令支持下面的数据类型:

  • Char;
  • Date;
  • Long;
  • Number;
  • Varchar2;

3 参数设置

Copy命令可以使用如下参数来控制该指令的一些行为,分别是:

1)Set Long变量

用于限制Long列的长度,如果列过长,则会截断超过该参数的长度;

2)Set Arraysize变量

用于限制每次从数据库获取的数据行数,对应的数据行数组成一个批次;

3)Set Copycommit变量

用于设置提交更改至数据库对应的批次数量;

三 示例

SQL> set arraysize 5000;

SQL> set copycommit 40;

SQL> copy from scott/scott@orcl to scott/scott@orcl insert scott.t_copy using select *from scott.t_test;



Array fetch/bind size is 5000. (arraysize is 5000)

Will commit after every 40 array binds. (copycommit is 40)

Maximum long size is 80. (long is 80)

5587968 rows selected from scott@orcl.

5587968 rows inserted into SCOTT.T_COPY.

5587968 rows committed into SCOTT.T_COPY at scott@orcl.

原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975611.html