Oracle数据库不同库表间的复制(oracle不同库表复制)

Oracle数据库不同库表间的复制

在实际应用中,经常需要将Oracle数据库中的数据从一个库复制到另一个库,或者将一张表的数据复制到另外一张表中,本文将介绍Oracle数据库不同库表间的复制方法。

一、复制单表数据到另外表

如果只需要将一个表的数据复制到另一个表中,可以使用以下语句:

INSERT INTO 新表 SELECT * FROM 旧表;

例如,需要将表 EMPLOYEES 的数据复制到表 OLD_EMPLOYEES 中,可以使用以下语句:

INSERT INTO OLD_EMPLOYEES SELECT * FROM EMPLOYEES;

二、从一个库中复制所有表到另一个库

如果需要将一个库中的所有表都复制到另一个库中,可以使用以下方法:

1. 在目标库中创建同名的数据库用户,并授予该用户在目标库中创建表的权限。

CREATE USER 用户名 IDENTIFIED BY 密码;

GRANT CREATE TABLE TO 用户名;

2. 在源库中创建存储过程,如下所示:

CREATE OR REPLACE PROCEDURE 复制表

IS

BEGIN

FOR t IN (SELECT table_name FROM all_tables WHERE owner = ‘源库用户’)

LOOP

EXECUTE IMMEDIATE ‘CREATE TABLE 目标库用户.’ || t.table_name || ‘ AS SELECT * FROM 源库用户.’ || t.table_name;

END LOOP;

END;

其中,源库用户和目标库用户是分别指源库和目标库中的用户,需要将其替换成实际的用户名。以上存储过程将遍历源库下所有表并创建同名的表到目标库用户下,并将源库的数据复制到目标库中。

执行存储过程:

EXEC 复制表;

三、从一个库中复制部分表到另一个库

如果只需要复制源库中的特定表到目标库中,可以修改以上存储过程:

CREATE OR REPLACE PROCEDURE 复制表 (表名 varchar2)

IS

BEGIN

EXECUTE IMMEDIATE ‘CREATE TABLE 目标库用户.’ || 表名 || ‘ AS SELECT * FROM 源库用户.’ || 表名;

END;

其中,表名是需要复制的表名,例如,复制表 EMPLOYEES,可以执行以下语句:

EXEC 复制表(‘EMPLOYEES’);

总结

本文介绍了Oracle数据库不同库表间的复制方法,涉及单表与多表复制两种方法,操作简单易学,能够大大提高数据迁移的效率。


数据运维技术 » Oracle数据库不同库表间的复制(oracle不同库表复制)