我使用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 -
但无济于事。
答案 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');