dmp檔案的做成

嚯嚯go發表於2024-09-20

1.建一個臨時表
 ・表結構和匯出表一樣
 ・要匯出的資料,可以用滿足一定條件的sql文選出來,存到臨時表裡。
  然後用dmp命令從臨時表匯出dmp檔案。

 臨時表的建表語句:
 create table tab_name_DMP
 tablespace DATA_USER_XXX
 as select * from tab_name where xxx檢索條件;

 ※1.表空間一定要指定。不指定會使用預設表空間。預設表空間容量小的場合,如果往臨時表匯入大量的資料,表空間容量一旦不夠會發生error。
(本番環境發生error,要各種解釋會很麻煩。切記:要給臨時表指定表空間)

 ※2.DB所在schema的表空間容量使用情況,可以用如下sql文進行查詢:

select xxx

2.dmp檔案匯出
empdp

3.dmp檔案匯入
把前面做出的dmp檔案包含的資料,匯入到目標表。
impdp

補充:
如果匯出資料量不那麼大?比如沒有超過100萬條資料,也就40萬或50萬左右,
而且表的專案也不特別多,可以不用dmp檔案。
可以在sqldeveloper從臨時表匯出insert檔案。

注意:
1.insert檔案size不能過大,如果資料超過2024M,編輯器無法開啟。
檔案size太大,可以對檔案按照行數分割。
windows下可以用powershell執行如下命令:
\i=0; cat test.csv; ReadCount=100000 xxxx

現在綜合測試匯出的insert檔案,按照10萬行資料進行的檔案分割。
分割後檔案大小在1.5G左右。此時,雖然開啟很緩慢,但是用sakura可以開啟了。

2.insert檔案儲存成sql檔案了,可以用bat呼叫起來。
但是bat呼叫的時候,每行命令有長度限制。4000多byte還能執行,一旦超過這個上限就不執行了。
此時,只能手動copy命令到sqldeveloper的執行視窗執行命令。
手動複製的資料量也有限制。現在作業的insert文,一個檔案雖然有10萬條資料,但是每次只能copy一萬條。
再多資料就無法copy,會把developer幹成down掉的狀態。

copy資料失敗或者無響應的場合,可以關掉舊的執行視窗,新開一個執行視窗。
或者徹底關掉sqldeveloper,然後重新啟動sqldeveloper。

相關文章