問題:
1 、 使用 oracle dump 方式導出的數據在導入的時候不能隨意選擇一張表的數據進行導入;
一般業務的表的數量都有 1000 左右,在出現由于某張表數據異常導致的故障時,用 dump 文件進行恢復基本不可行或者很費事;
2 、 表存在外鍵約束和觸發器,使用 oracle dump import 方式導入表的時候不能非常簡單
的禁止觸發器和外鍵,導致大量錯誤產生,導入的表的數據不全,部分表數據沒有導入;
3 、 當修改了某些表的數據后需要將這些表的數據恢復到測試環境搭建時的數據, import
不能將這些表的數據清空后重新導入。
4 、 當修改了某些表的字段后需要將這些表的數據恢復到測試環境搭建時的數據, import
不能將這些表重建后重新導入。
解決:
PL/SQL Developer 導入導出工具
PL/SQL Developer 位于 PLSQL DEV 工具的 “Tools” 菜單下的 “Export tables?” 和 “Import
tables?” 下,可以進行數據的導出和導入。
導出功能介紹
Where clause:
使導出操作支持where條件,比如你只需要導出每張表的10000條記錄,可以在輸入框里輸入
“rownum < 10001”。
Compress file:
選中后支持導出文件的壓縮,節省存儲空間,但是壓縮會占用多余的時間。
Include storage:
導出的文件中包含建表信息,如果需要在導入的時候能支持建表操作,需要選中該項。
導入功能介紹
Drop tables :
支持在導入數據前先刪除表,選擇該項后,默認選擇 “Create tables” 選項,并且 “Truncate
tables” 和 “Delete table” 操作變成灰色不可用狀態。
Create tables :
支持在導入數據前先創建表,比如我們已將建好了用戶,這個時候需要導入表而之前又沒有執
行建表腳本的時候,可以選中此項。
Truncate tables :
支持在導入數據前先清空表數據,想恢復表數據到建測試環境的時候可以使用這個選項,該選
項和 “Delete tables” 互斥。
Delete tables :
支持在導入數據前刪除表數據,這個選項目前還沒有發現比較特殊的使用意義,該選項和
“Truncate tables” 互斥。該選項的導入速度大大慢于 “Truncate tables” ,一般使用 “Truncate tables” 。
如何解決導出 clob 和 blob 類型數據報錯的問題
當表字段中含有 clob 和 blob 類型數據時,使用 PL/SQL Developer 導出會報 stream read error
的錯誤,導出操作終止,說明 PL/SQL Developer 方式導出不支持這種類型, oracle export 方式可以支持這種類型。
由于需要導出的表很多, PL/SQL 在導出前都要對需要導出的表進行分析,通常都會花費十幾分
鐘的時間,然而由于某張表存在 clob 和 blob 類型數據時就會異常終止,那之前的操作時間就會浪費,為了導出所有表需要將導出的表進行標記,只導出沒有 clob 和 blob 類型數據的表。我們通常的做法是在導出表的時候用 ctrl 或者 shift 按鍵進行手工選擇,通過導出的日志記錄不能導出的表,然后手工將這些表反選出待導出的表。但是這樣操作費時費力,需要通過不停反復的操作,才能知道哪些表不能導出。
如何使用 oracle 系統視圖 all_tab_columns 和 PL/SQL 在導出表的時候提供的
Object selection 功能快速導出不包含 clob 和 blob 的表數據。
1 、 使用下面的 sql 語句拼出 Object selection 的文件內容。
-- 不包含 clob 和 blob 的表
select distinct('TABLE "'||a.OWNER ||'"."'||a.TABLE_NAME||'"') from sys.all_tab_columns a
where a.OWNER = '用戶名'
and a.TABLE_NAME not in (select t.TABLE_NAME from sys.all_tab_columns t where t.OWNER =
'用戶名' and t.DATA_TYPE in ('CLOB','BLOB'))
?
2 、 按照上面的語句的執行結果生成 Object selection 的文件(后綴是 .osf ),文件的內容
如下:
PL/SQL Developer Object Selection File
1
TABLE "用戶名"."表名1"
TABLE "用戶名"."表名2"
TABLE "用戶名"."表名3"
3 、 在導出表功能的表選擇框里單擊右鍵選擇 “Load Object selection” ,選擇上一步制
作的文件 , 完成表的選擇。
4 、選擇合適的參數,進行導出操作。 用 oracle export 方式導出包含 clob 和 blob 的數據。
?
oracle export:.dmp ? export executeble:oracle安裝路徑下client_1\bin文件夾下的exp.exe
sql inserts:.sql
pl/sql developer:.pde
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
