dts達夢數據遷移工具


一、前言

今天無意間發現一篇不錯的博客,關於達夢遷移工具的,正好最近也用到了,趁機整理一下,部分圖是從那篇博客里拷出來的,因為不想自己再操作一遍了,請見諒。

數據遷移方式有很多,跨庫比較常用的是dts和dmfldr。

遷移的時候建議先不遷移外鍵等約束,在選擇好要遷移的表時,點擊轉換,按照下面步驟遷移。

(1)第一次只選擇表定義,不選擇約束等

(2)第一次遷移完成后(確保沒有錯誤),第二次只選擇數據

(3)第三步選擇約束、索引等

(4)數據量大的表,可以用達夢的dmfldr工具單獨遷移

(4)驅動建議用源庫自帶的驅動,不然可以會遷移出錯

二、遷移

1、dts打開方式

可以在xx/dmdbms/tool下找到dts打開,或者管理工具里,在主頁雙擊DM數據庫遷移工具。

 

2、新建工程

 

 

 

3、數據類型映射

打開找到新建工程下的數據類型映射,這步可以不做,一般直接創建遷移就行,里面有轉換按鈕,需要的話可以做類型映射。

 

點擊添加,添加對應要遷移的數據庫類型和目前數據庫類型的對應關系

 

達夢數據庫對應類型

 

4、新建遷移任務

 

 

 

點擊下一步,選擇對應遷移數據庫

 

點擊下一步,輸入源端(需要遷移庫)和目的端(把數據遷移到的目標庫)的連接信息

5、選擇遷移方式

1)查詢方式遷移

 

2)從數據源復制對象

這里要多說一句,遷移前要先在目的庫創建用戶,創建好用戶,達夢會自動創建同名的模式,如果源庫和目的庫模式名稱不同,這里要先做好模式映射,在“目的模式”中輸入你想遷入的目的庫的模式名。

 

點擊下一步選擇需要遷移的表

選擇后可以點擊轉換按鈕,設置你要遷移哪些東西,比如只遷移表結構,還是只遷移數據,等等,還可以設置數據類型映射,如下圖的“數據類型”。

如果想把你在轉換中的設置,應用到其他的表上,可以勾選“應用當前選項到其他同類對象”。

 

6、遷移出錯處理

1)重新遷移出錯的對象

建議保存遷移錯誤

 

2)導入遷移對象

如果遷移對象很多,在遷移的時候,可以導入遷移對象,只遷移部分表,最常用的場景是,重新遷移出錯的表

 

可以自定義導入對象的格式,現在只支持txt,文件格式如下:

 

逗號前面的是模式名稱,逗號后面的是表名稱。

最終效果:

 

 

 

3)補充

如果表比較多,txt整理起來還挺麻煩的,在這里補充個notpade快捷鍵的用法。

a)先添加一個逗號

 

b)復制列

復制第一個逗號

Alt+鼠標左鍵

選取要復制的列

Ctrl+v

效果如下:

 

或者,也可以把光標放在第三行DEM后面,點擊“編輯”-列塊編輯,插入文本輸入逗號

 

點擊確定即可

 

c)在行末添加“,

使用notepad++替換功能在每行末尾添加”,,構成所需要的字符串內容

點擊確定之后,執行全部替換

Ctrl+F

點替換

 

$表示行末

 

7、數據比對

遷移完,想知道數據到底遷移過來沒,一般直接比較數據量就行了。

可以先創建一張統計表,然后統計每張表的數據量,把數據量信息插入統計表中,如下:

create table TMP_GET_ACTURAL_TABLE_COUNT(table_name varchar(50),table_cnt int);
begin
    for cursor_sql in(
      select 'insert into TMP_GET_ACTURAL_TABLE_COUNT(table_name,table_cnt) select '''||table_name||''' as table_name,count(1) as table_cnt from '||table_name as sqlstr1,table_name from (select b.name table_name from sysobjects a,sysobjects b
              where a.type$='SCH' and a.id = b.schid
               and b.type$='SCHOBJ' and b.subtype$='UTAB'
               and a.name ='SYSDBA' and b.name not like 'TMP%' )
     ) loop
     --print cursor_sql.table_name;
          execute immediate (cursor_sql.sqlstr1);
          commit;
    end loop;
end;

統計達夢庫中某個模式下的數據量,注意表名稱如果是關鍵字,需要加引號,不然這個過程塊會報錯。 oracle中換成從all_tables中查詢,根據owner篩選。SYSDBA是本例統計的模式名稱。

select b.name table_name from sysobjects a,sysobjects b
              where a.type$='SCH' and a.id = b.schid
               and b.type$='SCHOBJ' and b.subtype$='UTAB'
               and a.name ='SYSDBA' and b.name not like 'TMP%' 這個是達夢的語法,其實也能換成通過all_tables來統計,或者使用模式所屬用戶登錄,通過user_tables統計,user_tables只能查到當前登錄用戶下的所有表。

8、其他

達夢有個雲適配中心,地址如下:

https://eco.dameng.com/docs/zh-cn/start/migrate-oracle-dm.html

里面有遷移手冊之類的,還有遷移時遇到的各種問題整理,會定時更新,有需要的可以參考下。

 

 

 

 

 

 更多資訊請上達夢技術社區了解: https://eco.dameng.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM