達夢資料庫dexp邏輯匯出工具使用介紹

始於腳下發表於2020-12-22

Dexp/dimp 是達夢資料庫邏輯匯出/匯入工具的簡稱,主要用來對達夢資料庫進行邏輯匯出/匯入。Dexp/dimp是達夢資料庫自帶工具,只要安裝了達夢資料庫,就可以在安裝目錄下的/dmdbms/bin中找到。達夢Dexp/dimp工具目前能夠支援資料庫級、使用者級、模式級和表級四種級別的匯出/匯入。四種級別獨立互斥,不能同時存在。

我們在這裡先建立示例庫,來模擬真實帶業務資料的場景。達夢資料庫的示例庫可以在建立資料庫時同步建立,也可以手動執行示例庫指令碼,手動建立。示例庫指令碼一般存放在安裝目錄的/dmdbms/samples下,我們手動執行建立即可。

SQL> start C:\dmdbms\samples\instance_script\bookshop\GBK\CREATESCHEMA.sql
SQL> start C:\dmdbms\samples\instance_script\bookshop\GBK\CREATETABLE.sql
SQL> start C:\dmdbms\samples\instance_script\bookshop\GBK\INSERTSQL.sql

其他示例庫感興趣的讀者可以自行去檢視其內容,示例資訊覆蓋比較全面,包括達夢資料庫中各種.ini結尾的配置檔案示例都是存在的。

現在,我們就開始通過日常工作中的常用使用場景,來熟悉這兩個工具的具體用法。

1 、使用dexp實現資料庫級匯出,執行全庫匯出。

dexp userid=SYSDBA/SYSDBA file=C:\dmdbms\data\backup\db_full.dmp log=db_full.log full=Y

細節說明:此處file引數後面指定了全路徑,檔案會寫入指定路徑下;而log引數後面未指定全路徑,那麼log日誌檔案將會寫入當前執行命令的路徑下,此處當前目錄為C:\dmdbms\bin,所以日誌檔案就會寫入此目錄下。建議生成檔案引數後面寫全路徑來操作匯出。如下:

dexp userid=SYSDBA/SYSDBA file=C:\dmdbms\data\backup\db_full.dmp log= C:\dmdbms\data\backup\db_full.log full=Y

2 、使用dexp實現使用者級匯出,匯出SYSDBA使用者下的所有資料。

dexp userid=SYSDBA/SYSDBA file=C:\dmdbms\data\backup\db_owner.dmp log=C:\dmdbms\data\backup\db_owner.log owner=SYSDBA

細節說明:要匯出多個使用者時,可以用逗號隔開,語法為OWNER=<使用者名稱>{,<使用者名稱>},如果使用者名稱在資料庫中顯示為小寫,需要用雙引號括起來。

3 、使用dexp實現模式級匯出,匯出SALES,test,OTHER模式的所有資料,使用2個執行緒執行匯出(並行度為2)。

dexp userid=SYSDBA/ SYSDBA schemas=sales,\"test\",other file=C:\dmdbms\data\backup\db_schema.dmp log=C:\dmdbms\data\backup\db_schema.log  PARALLEL=2

細節說明:此處模式test為小寫,所以必須要用雙引號括起來。一般情況下,owner與schemas匯入匯出是相同的。但是使用者可以包含多個模式,在這種情況下schemas的匯入匯出時owner匯入匯出的一個子集。

4 、使用dexp實現表級匯出,匯出模式salse下CUSTOMER、CUSTOMER_ADDRESS表,其中,CUSTOMER表中只需要PERSONID為14的資料。

dexp userid=SYSDBA/SYSDBA file=C:\dmdbms\data\backup\db_tables.dmp log=C:\dmdbms\data\backup\db_tables.log tables=sales.CUSTOMER,sales.CUSTOMER_ADDRESS query=” where personid = 14”

細節說明:因為達夢Dexp/dimp工具目前支援的資料庫級、使用者級、模式級和表級四種級別獨立互斥,不能同時存在。所以此處指定表匯出tables引數的時候,就不能使用owner或者schemas引數來對錶的所屬進行限制。如下寫法會提示“暫時不支援多種匯出模式……”。

dexp userid=SYSDBA/SYSDBA file=C:\dmdbms\data\backup\db_tables.dmp log=C:\dmdbms\data\backup\db_tables.log tables=sales.CUSTOMER,sales.CUSTOMER_ADDRESS

5 、使用dexp實現排除表匯出,匯出sales模式下除CUSTOMER表以外的其他資料。

dexp userid=SYSDBA/SYSDBA file=C:\dmdbms\data\backup\exc_tables.dmp log=C:\dmdbms\data\backup\exc_tables.log exclude=tables:CUSTOMER schemas=sales

細節說明:EXCLUDE物件種類名包括 CONSTRAINTS、 INDEXES、 ROWS、 TRIGGERS、 GRANTS。如果匯出方式為tables表級或者schemas模式級匯出時,EXCLUDE=SCHEMAS:<模式名>{,<模式名>}排除模式不起作用。反之,INCLUDE為包含的物件種類。

6 、使用dimp將模式salse的資料匯入salse_bak模式中,並行度為2,匯入時忽略建立資料庫物件出現的錯誤並繼續執行。

dimp userid=SYSDBA/SYSDBA remap_schema=SALES:SALES_BAK file=C:\dmdbms\data\backup\sales_schema.dmp log=C:\dmdbms\data\backup\dimp_sales.log parallel=2 ignore=y

細節說明:remap_schema引數的值最好為大寫方式進行對應,小寫對應會出現無法正常remap的情況。在做remap_schema時,目標模式不需要提前建立,匯入時會自動remap並建立。目前,達夢資料庫還不支援tablespace、table等方式的remap。

7 、使用dimp將模式salse資料匯入資料庫中,要求直接替換資料庫中salse模式下已存在的表,並且強制先匯入表物件,匯入時批量提交行數為2000行。

dimp userid=SYSDBA/SYSDBA schemas=sales file=C:\dmdbms\data\backup\sales_schema.dmp log=C:\dmdbms\data\backup\dimp_sales.log table_first=y table_exists_action=replace commit_rows=2000

細節說明:TABLE_EXISTS_ACTION引數有四個選項,分別為SKIP:跳過此表;APPEND:直接向現有表中匯入資料;TRUNCATE:先刪除現有表中的資料,再向表中匯入資料;REPLACE:先刪除現有表,再導資料。

Dexp/dimp 還有其他很多有用的引數,如dexp的filesize與filenum引數,來限制單個匯出檔案大小以及匯出多少哥模板檔案個數;指定drop引數在匯出表後刪除表;dexp/dimp的加解密相關的引數等等。Dimp是與dexp相對應的邏輯匯入工具,主要用法與dexp一樣。Dexp/dimp的引數詳細介紹可以參照官方文件或者使用dexp/dimp help來獲取幫助,在此不一一贅述。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31403259/viewspace-2744422/,如需轉載,請註明出處,否則將追究法律責任。

相關文章