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数据库不同库表间的复制方法,涉及单表与多表复制两种方法,操作简单易学,能够大大提高数据迁移的效率。