Dbeaver做數(shù)據(jù)遷移的詳細過程記錄
1、選擇源頭數(shù)據(jù)庫的表、鼠標右擊、選擇導出數(shù)據(jù)
2、在數(shù)據(jù)轉化彈框中,雙擊 ‘數(shù)據(jù)庫,數(shù)據(jù)表’ 那一欄
3、選擇目標數(shù)據(jù)庫,調整字段類型映射關系
4、調整字段的映射關系
目前遇到的字段類型,只有 int,bigint 轉 number 類型
再就是VARCHAR2 長度不夠的,加長度,超過4000的就改為clob類型
5、勾選‘打開新連接’,‘選擇行計數(shù)’
6、點擊開始
7、注意事項
A、如果是Oracle轉Oracle,同類型的數(shù)據(jù)庫遷移,就不用管字段類型的映射關系了
B、如果字段的映射不對就會報錯,或者表創(chuàng)建了,但數(shù)據(jù)沒有進去
C、遇到的字段類型,只有 int,bigint 轉 number 類型
D、有些字段遷移后會變成小寫,需要后面手動調整
可以用SQL查詢出所有的小寫字段
select column_name,table_name from user_tab_columns where regexp_like(column_name,'[a-z]');
E、VARCHAR2(200) 類型可能存在 實際長度大于限制長度的問題,會報錯出來
超過4000的長度,可以改為 clob 類型
F、VARCHAR2 類型如果沒有限制長度,會報錯:“缺少括號”,加就可以了 VARCHAR2(200)
G、數(shù)據(jù)遷移后,對比兩個數(shù)據(jù)庫表的數(shù)量,可以使用SQL查詢數(shù)量
H、表遷移后,發(fā)現(xiàn)索引都沒有遷移
導致登錄的時候報錯:
java.lang.IllegalArgumentException: obj is null
處理方式:遷移索引后,問題就自動好了
8、處理方式總結
A、導出時,可以批量的處理,比如一次處理10個表,遇到報錯就停止執(zhí)行,這樣后面再處理報錯的表就可以了,其他表會都遷移了。報錯的表需要刪除了,從新遷移。刪除表后,需要刷新數(shù)據(jù)庫。
B、批量遷移索引
使用SQL 查詢出SQL server 所有創(chuàng)建索引的語句。下面是SQL
WITH indexInfo as ( SELECT SCHEMA_NAME(t.schema_id) [schema_name],t.name as [table_name],t1.name as [index_name] ,t1.type,t1.type_desc,t1.is_unique,t1.is_primary_key,t1.is_unique_constraint,t1.has_filter,t1.filter_definition ,STUFF((SELECT ','+t4.name FROM sys.sysindexkeys t2 inner join sys.index_columns t3 ON t2.id=t3.object_id and t2.indid=t3.index_id and t2.colid=t3.column_id inner join sys.syscolumns t4 ON t2.id=t4.id and t2.colid=t4.colid WHERE t2.id=t1.object_id and t1.index_id=t2.indid and t2.keyno <> 0 ORDER BY t3.key_ordinal FOR XML PATH('')),1,1,'') AS index_cols ,STUFF((SELECT ','+t4.name FROM sys.sysindexkeys t2 inner join sys.index_columns t3 ON t2.id=t3.object_id and t2.indid=t3.index_id and t2.colid=t3.column_id inner join sys.syscolumns t4 ON t2.id=t4.id and t2.colid=t4.colid WHERE t2.id=t1.object_id and t1.index_id=t2.indid and t2.keyno = 0 ORDER BY t3.key_ordinal FOR XML PATH('')),1,1,'') AS include_cols FROM sys.tables as t inner join sys.indexes as t1 on (t1.index_id > 0 and t1.is_hypothetical = 0) and (t1.object_id=t.object_id) WHERE t1.type in(1,2) ), indexInfo2 AS ( SELECT * ,(CASE WHEN is_primary_key = 1 THEN 'alter table '+[schema_name]+'.'+[table_name]+' add constraint '+[index_name]+' primary key '+(CASE WHEN [type]=1 THEN 'clustered' ELSE 'nonclustered' END)+'('+index_cols+');' WHEN is_unique = 1 AND is_unique_constraint = 1 THEN 'alter table '+[schema_name]+'.'+[table_name]+' add constraint '+[index_name]+' unique '+(CASE WHEN [type]=1 THEN 'clustered' ELSE 'nonclustered' END)+'('+index_cols+');' WHEN is_unique = 1 AND (is_primary_key = 0 OR is_unique_constraint = 0) THEN 'create unique '+(CASE WHEN [type]=1 THEN 'clustered' ELSE 'nonclustered' END)+' index '+[index_name]+' on '+[schema_name]+'.'+[table_name]+'('+index_cols+');' ELSE 'create '+(CASE WHEN [type]=1 THEN 'clustered' ELSE 'nonclustered' END)+' index '+[index_name]+' on '+[schema_name]+'.'+[table_name]+'('+index_cols+') ;' END) script FROM indexInfo ) SELECT [schema_name],[table_name],[index_name],script +(CASE WHEN include_cols IS NOT NULL THEN ' include('+include_cols+')' ELSE '' END) +(CASE WHEN has_filter = 1THEN ' where '+filter_definition ELSE '' END) FROM indexInfo2 ORDER BY [schema_name],[table_name],[type],[index_name],is_primary_key DESC,is_unique_constraint DESC,is_unique DESC
C、批量處理語句后(兩種數(shù)庫的DDL語句有所差異),可以批量執(zhí)行。
可以全部一起執(zhí)行,或者一次執(zhí)行50條語句,遇到報錯就停止,報錯前的語句都執(zhí)行了,就可以刪除了。處理報錯后,再執(zhí)行報錯后面的語句。
有些不好處理的報錯,可以先不管,后面在手動對表建索引就可以了
批量執(zhí)行DDL語句的方式
新開個窗口放DDL語句,SQL編輯器 --> 執(zhí)行SQL腳本
注意事項:
SQL SERVE 遷移到 ORACLE 后,在 ‘數(shù)據(jù)庫表管理’ 頁面做表創(chuàng)建的時候,DDL語句會報錯,因為字段都是小寫,且都加了引號,導致Oracle不能識別。需要刪除 D:\03_workspace\01_fenghua\02_server\fenghua-tmp-server\src\main\java\xyz\elidom\dbist\ddl\impl\DdlJdbc.java 文件,刪除后重啟后端,就可以了,
后面生成的DDL語句,字段就沒引號了,Oracle就可以正常創(chuàng)建表了。
總結
到此這篇關于Dbeaver做數(shù)據(jù)遷移的文章就介紹到這了,更多相關Dbeaver數(shù)據(jù)遷移內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
8 種常用的 NoSQL 數(shù)據(jù)庫系統(tǒng)對比分析
這篇文章主要介紹了8 種 NoSQL 數(shù)據(jù)庫系統(tǒng)對比,需要的朋友可以參考下2016-02-02SQL語句優(yōu)化之JOIN和LEFT JOIN 和 RIGHT JOIN語句的優(yōu)化
在數(shù)據(jù)庫的應用中,我們經(jīng)常需要對數(shù)據(jù)庫進行多表查詢,然而當數(shù)據(jù)量非常大時多表查詢會對執(zhí)行效率產(chǎn)生非常大的影響,因此我們在使用JOIN和LEFT JOIN 和 RIGHT JOIN語句時要特別注意2018-03-03eXtremeDB 6.0正式發(fā)布:提高擴展性和分布式查詢速度
這篇文章主要介紹了eXtremeDB 6.0正式發(fā)布:提高擴展性和分布式查詢速度,本文詳細介紹了全新的eXtremeDB 6.0的一些特性,需要的朋友可以參考下2014-10-10建立在Tablestore的Wifi設備監(jiān)管系統(tǒng)架構實現(xiàn)
一般大公司會有許多園區(qū),園區(qū)內會有不同部門的同事在一起辦公。每個園區(qū)內都要配備大量的Wifi設備從而為園區(qū)同事提供方便的上網(wǎng)服務。因此,集團需要一套完善的監(jiān)管系統(tǒng)維護所有的Wifi設備。需要的朋友來一起學習下吧2019-05-05