oracle匯入大資料、資料庫之間遷移資料簡單方法,oracle遷移
oracle匯入資料的方式比較多:主要介紹兩種十分簡單的方式(通過已存在的工具完成匯入)。
一、通過pl/sql developer匯入.csv資料。
普通的pc機,這種方式一般只能匯入20+w的資料,再多就有卡死的風險。
工具->工具匯入器->開啟,選擇.csv檔案匯入:如下:
可以修改“每次提交”的數目,需要注意來源資料與表欄位的映射關係,然後點擊“匯入”,即可。
二、如果量達到100w級以上,建議用sql語句匯入或其它方式。
在達到100w+後,最好在伺服器上通過sqlplus串連匯入,在pc端直接完成匯入應該比較困難。
sqlplus usr/pwd@'(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1521)) )(CONNECT_DATA = (SERVER = xxxx) (SERVICE_NAME = xxxx)))'
然後輸入insert into sql語句即可,匯入完成後commit。
三、資料庫之間遷移資料。
有時間需要從將一個資料庫的資料,遷移到另外一個資料庫,這就必然使用到DB link。如:我們需要從資料庫A向資料庫B匯入資料。
在DBA分配DB link許可權之後,使用下面語句在資料庫A上建立DB link。
create database link dblink_AtoB connect to usr identified by pwd using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = xxxx) (SERVICE_NAME =xxxx) ) )';
建立之後,可以通過pl sql developer,或者sql語句查看是否建立成功,此處我們建立的db link名為:dblink_AtoB。
然後使用類似如下的sql語句,即可完成匯入資料。
insert into B_table@DBLINK_ATOB select * from usr.A_table;
Oracle中資料移轉的工具
SQL*Plus Copy命令
問題描述
怎樣在SQL*Plus中實現不同的表之間的資料複製,不論是本地的還是遠端?
問題分析
在SQL*Plus中的copy命令,可以完成遠端資料庫、本機資料庫或Oracle資料庫與非Oracle資料庫之間的資料複製。其效能與匯入/匯出相同。
copy的基本命令格式:
copy {from source_database |to destination_database}{append|create|insert|replace}destination_table[(column,column,column,...)]using<source_select_statement>
其中資料庫連接使用如下格式:
username/password\]@connect_identifier
在資料複製時,複製支援的資料類型為:char、date、long、number、varchar2。 所示。
SQL*Plus Copy命令可在不同資料庫之間,以及同一個資料庫內的不同模式的表之間複製資料。
? •從遠端資料庫複製資料到本機資料庫。
? •從本機資料庫(預設)複製資料到遠端資料庫。
? •從一個遠端資料庫複製資料到另一個遠端資料庫。
通常,copy命令用於Oracle資料庫與非Oracle資料庫之間複製資料。如果在Oracle資料庫之間複製資料,應該使用create table as 和insert的SQL命令。
•對目標表的控制方式有4種類型:replace、create、insert和append。
? •replace子句指定了被建立的表名。如果目標表已存在,則刪除並用包含複製資料的表替代。若不存在,則建立目標表。
? •使用create子句可避免覆蓋已存在的表。若目標表已存在,則copy報告一個錯誤;若不存在,則建立目標表。
? •insert插入資料到已存在的表。
將查詢到的行插入到目標表,如果目標表不存在,copy返回錯誤。當使用insert時,using子句必須為目標表的每個列選擇對應的列。
? •append是將查詢到的行插入到目標表。如果不存在,則建立目標表並插入。
問題解答
首先應注意的是:
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/<your_password>@bostondb-create empcopy-using select*from hr
步驟3:為其他使用者複製資料。
copy from hr/hr@dbora-create job-using select*from renbs.jobs
以使用者h......餘下全文>>
oracle 大量空間資料 怎快速 遷移?
一樣的在server2上建立好,也就是server1上有什麼資料表空間server2上也都建上 而且大小要分配好。
2、在server2上建立好要遷移的應用使用者,應用使用者名稱,使用者權限等也要和server1上一樣。
3、把server1按USER進行exp匯出。
4、把匯出檔案imp到server2即可。
使用者很多那就採取下面步驟,更簡單:
1、server1執行exp按database匯出。
2、然後server2上執行匯入。
不用建資料表空間和使用者。
如果server1能停機的話還有更簡單的:
就是直接把server1的oracle 關掉,報資料檔案,控制檔案,redolog檔案,參數檔案,按照對應的目錄copy到server2,然後直接在server2上開啟資料庫就可以了。