如何在Oracle中将表从一个数据库复制到另一个数据库

时间:2017-04-17 01:44:32

标签: sql oracle

我使用Oracle作为我的数据库。

我有一个QA环境(QA_1),现在我刚刚创建了另一个新的QA环境(QA_2)。但是,我必须将一些数据从QA_1表复制到QA_2。

如何从一个数据库表复制到另一个数据库表?所以类似于以下语法:

INSERT INTO QA_2.app_prop (prop_id, prop_name, prop_value)
SELECT prop_id, prop_name, prop_value FROM QA_1.app_prop WHERE prop_id IN 
(SELECT prop_id FROM app_env WHERE function = 'CCC');

我与QA_1的用户连接是:

host name: uat-blah.foo.foo.com
port: 2501
servicename: uat

我已经浏览了谷歌和这里的stackoverflow,我找不到任何语法来做我想要的。

我已经尝试过SQL plus

的语法
COPY FROM username/password@connectionstring-
TO username/password@connectionstring -

但无济于事。

1 个答案:

答案 0 :(得分:3)

  

COPY命令将在SQL * Plus的未来版本中废弃SQL*Plus User's Guide and Reference-Release 9.2

有几种方法,比如使用数据泵或CTAS。您也可以使用Database Link

SQL> CREATE DATABASE LINK dblink_QA_1
CONNECT TO QA_1_app_prop_SCHEMA
IDENTIFIED BY password
USING '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = uat-blah.foo.foo.com)(PORT = 2501)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = uat)))'; 

将插入语句更改为 -

SQL> INSERT INTO QA_2.app_prop (prop_id, prop_name, prop_value)
SELECT prop_id, prop_name, prop_value FROM QA_1.app_prop@dblink_QA_1 WHERE prop_id IN 
(SELECT prop_id FROM app_env@dblink_QA_1 WHERE function = 'CCC');