2014-02-19 68 views
0

如何将行从远程数据库的表中插入到表中?从另一个数据库的表中插入行

我们目前有一个存储过程,它使用数据库链接完成此操作。但是,我们必须删除该链接,因为我们的公司政策不允许其使用。

begin 
    ... 
    execute immediate 'insert into '|| table_name 
        || ' (select * from schema_name.'|| table_name ||'@link)'; 
    ... 
end; 

我无法使用COPY命令,它似乎并不认可。

COPY FROM username/[email protected] 
    insert into table_name using (select * 
           from table_name); 
Error report: 
SQL Error: ORA-00926: missing VALUES keyword 
00926. 00000 - "missing VALUES keyword" 
*Cause:  
*Action: 

根据this SQL加页,COPY命令现在已过时。

回答

4

你的查询语法有点不对,你只需要指定INSERT/REPLACE/CREATE ..和INTO不需要需要。

COPY不是过时的,但它以编码issues结束。 你会使用连续字符来解决这个问题。

COPY 
    FROM username/[email protected] 
    TO username/[email protected] 
    insert 
table_name 
using 
    select * from schema_name.table_name; 

还可以,下载相应表格数据到一个文本文件,并使用SQL*Loader将数据加载到另一个数据库。

我更喜欢SQL * Loader选项!由于维护非常简单!

对于下载,
- 您可以使用SPOOL用分隔符选项提到Here
- 在Pro C写的一个专业C/PLSQL将数据输出到文件(Method 4,或选择列名dba_columns))

+0

+1 for Sql * Loader。还有[数据泵](http://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm),可以使用同样的效果。 – abhi

+0

@OracleUser除了COPY还有其他选择吗?我了解到COPY是一个SQL Plus命令,因此不能用于存储过程。存储过程在cron作业上,因此SQL Loader选项不适合这种情况。 – mauryat

相关问题