Oracle遠端複製表到本地

2021-08-31 15:41:25 字數 1756 閱讀 1993

問題2 sql*plus copy命令

問題描述

怎樣在sql*plus中實現不同的表之間的資料複製,不論是本地的還是遠端的?

問題分析

在sql*plus中的copy命令,可以完成遠端資料庫、本地資料庫或oracle資料庫與非oracle資料庫之間的資料複製。其效能與匯入/匯出相同。

copy的基本命令格式:

username/password\]@connect_identifier

在資料複製時,複製支援的資料型別為:char、date、long、number、varchar2。原理如圖3-9所示。

圖3-9 sql*plus copy原理圖

sql*plus copy命令可在不同資料庫之間,以及同乙個資料庫內的不同模式的表之間複製資料。

 •從遠端資料庫複製資料到本地資料庫。

 •從本地資料庫(預設)複製資料到遠端資料庫。

 •從乙個遠端資料庫複製資料到另乙個遠端資料庫。

通常,copy命令用於oracle資料庫與非oracle資料庫之間複製資料。如果在oracle資料庫之間複製資料,應該使用create table as 和insert的sql命令。

 •replace子句指定了被建立的表名。如果目標表已存在,則刪除並用包含複製資料的表替代。若不存在,則建立目標表。

 •使用create子句可避免覆蓋已存在的表。若目標表已存在,則copy報告乙個錯誤;若不存在,則建立目標表。

 •insert插入資料到已存在的表。

將查詢到的行插入到目標表,如果目標表不存在,copy返回錯誤。當使用insert時,using子句必須為目標表的每個列選擇對應的列。

問題解答

首先應注意的是:

1)copy是sql*plus命令,不是sql命令,在語句最後不必加分號;

2)由於多數copy命令比較長,所以,在分行時每行末尾必須有續行符(-),最後一行不加。

具體步驟如下。

步驟1:使用using子句指定乙個查詢,將其查詢結果資料複製到本地資料庫的當前模式下employee表中。例如:

copy from hr/hrd@rensh-replace employee-using select last_name,salary-from emp_details_view-where department_id=30

步驟2:使用create從乙個遠端資料庫複製資料到本地資料庫。

copy from hr/@bostondb-create empcopy-using select*from hr

步驟3:為其他使用者複製資料。

copy from hr/hr@dbora-create job-using select*from renbs.jobs

以使用者hr連線到資料庫dbora,將renbs模式的jobs表複製到當前本地資料庫。

步驟4:在同乙個資料庫中可將乙個模式的表複製到另乙個模式中。同樣必須指定使用者口令和資料庫服務名。

copy from hr/password@mydatabase-insert employee_copy2-using select * from employee_copy

步驟5:在同乙個遠端資料庫中複製表,必須是關鍵字from和to中包含相同使用者名稱和資料庫服務名。

copy from hr/password@daliandb-to hr/password@daliandb-insert employee_copy2-using select * from employee_copy

oracle 複製表與複製表結構

一 複製表的語法 create table 表名稱 as 子查詢 例子 複製oracel安裝後的預設資料庫scott中的表emp create table myemp as select from emp 此例是表示表結構和表內容一起複製過來了。二 複製表結構 create table 表名稱 as...

oracle複製表資料,複製表結構

1.不同使用者之間的表資料複製 對於在乙個資料庫上的兩個使用者a和b,假如需要把a下表old的資料複製到b下的new,請使用許可權足夠的使用者登入sqlplus insert into b.new select from a.old 如果需要加條件限制,比如複製當天的a.old資料 insert i...

oracle 複製表與複製表結構

一 複製表的語法 create table 表名稱 as 子查詢 例子 複製oracel安裝後的預設資料庫scott中的表emp create table myemp as select from emp 此例是表示表結構和表內容一起複製過來了。二 複製表結構 create table 表名稱 as...