2014-02-19 102 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

相關問題