从另一个数据库中的表插入行

时间:2014-02-19 21:54:19

标签: sql oracle plsql

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

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

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

我无法使用COPY命令,因为它似乎无法识别。

COPY FROM username/pwd@SID
  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 Plus页面,COPY命令现已过时。

1 个答案:

答案 0 :(得分:4)

您的查询语法略有错误,您只需指定INSERT/REPLACE/CREATE ..而INTO NOT 需要。

COPY不会过时,但会以某些编码issues结束。 你可以使用行继续符来解决这个问题。

COPY 
  FROM username/pwd@SID 
  TO username/pass@SID2
  insert 
 table_name 
 using 
    select * from schema_name.table_name;

您也可以将表格数据下载到文本文件中,然后使用SQL*Loader将数据加载到另一个数据库中。

我更喜欢SQL * Loader选项!由于维护很容易!

下载,
- 您可以使用带有分隔符选项的SPOOL,如Here所述 - 编写Pro C / PLSQL将数据输出到文件中(Pro C中为Method 4,或者从dba_columns中选择列名))