oracle匯入大資料、資料庫之間遷移資料簡單方法,oracle遷移

來源:互聯網
上載者:User

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上開啟資料庫就可以了。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.