Dbeaver做數(shù)據(jù)遷移的詳細過程記錄
1、選擇源頭數(shù)據(jù)庫的表、鼠標(biāo)右擊、選擇導(dǎo)出數(shù)據(jù)

2、在數(shù)據(jù)轉(zhuǎn)化彈框中,雙擊 ‘數(shù)據(jù)庫,數(shù)據(jù)表’ 那一欄

3、選擇目標(biāo)數(shù)據(jù)庫,調(diào)整字段類型映射關(guān)系

4、調(diào)整字段的映射關(guān)系
目前遇到的字段類型,只有 int,bigint 轉(zhuǎn) number 類型
再就是VARCHAR2 長度不夠的,加長度,超過4000的就改為clob類型

5、勾選‘打開新連接’,‘選擇行計數(shù)’

6、點擊開始

7、注意事項
A、如果是Oracle轉(zhuǎn)Oracle,同類型的數(shù)據(jù)庫遷移,就不用管字段類型的映射關(guān)系了
B、如果字段的映射不對就會報錯,或者表創(chuàng)建了,但數(shù)據(jù)沒有進去
C、遇到的字段類型,只有 int,bigint 轉(zhuǎn) number 類型
D、有些字段遷移后會變成小寫,需要后面手動調(diào)整
可以用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)索引都沒有遷移
導(dǎo)致登錄的時候報錯:
java.lang.IllegalArgumentException: obj is null
處理方式:遷移索引后,問題就自動好了
8、處理方式總結(jié)
A、導(dǎo)出時,可以批量的處理,比如一次處理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 DESCC、批量處理語句后(兩種數(shù)庫的DDL語句有所差異),可以批量執(zhí)行。
可以全部一起執(zhí)行,或者一次執(zhí)行50條語句,遇到報錯就停止,報錯前的語句都執(zhí)行了,就可以刪除了。處理報錯后,再執(zhí)行報錯后面的語句。
有些不好處理的報錯,可以先不管,后面在手動對表建索引就可以了
批量執(zhí)行DDL語句的方式
新開個窗口放DDL語句,SQL編輯器 --> 執(zhí)行SQL腳本

注意事項:
SQL SERVE 遷移到 ORACLE 后,在 ‘數(shù)據(jù)庫表管理’ 頁面做表創(chuàng)建的時候,DDL語句會報錯,因為字段都是小寫,且都加了引號,導(dǎo)致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)建表了。
總結(jié)
到此這篇關(guān)于Dbeaver做數(shù)據(jù)遷移的文章就介紹到這了,更多相關(guān)Dbeaver數(shù)據(jù)遷移內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL與Oracle 差異比較之四條件循環(huán)語句
這篇文章主要介紹了MySQL與Oracle 差異比較之四條件循環(huán)語句,需要的朋友可以參考下2017-04-04
idea中連接數(shù)據(jù)庫時出現(xiàn)SSL錯誤的問題
這篇文章主要介紹了idea中連接數(shù)據(jù)庫是出現(xiàn)SSL錯誤的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
SunlightDB 2017新型區(qū)塊鏈數(shù)據(jù)庫
這篇文章主要為大家詳細介紹了SunlightDB 2017新型區(qū)塊鏈數(shù)據(jù)庫的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
數(shù)據(jù)庫之Hive概論和架構(gòu)和基本操作
Hive是一個構(gòu)建在Hadoop上的數(shù)據(jù)倉庫框架,最初,Hive是由Facebook開發(fā),后臺移交由Apache軟件基金會開發(fā),并做為一個Apache開源項目,感興趣的同學(xué)可以參考閱讀2023-04-04
DBeaver連接GBase數(shù)據(jù)庫的簡單步驟記錄
DBeaver數(shù)據(jù)庫連接工具,是我用了這么久最好用的一個數(shù)據(jù)庫連接工具,擁有的優(yōu)點,支持的數(shù)據(jù)庫多、快捷鍵很贊、導(dǎo)入導(dǎo)出數(shù)據(jù)非常方便,下面這篇文章主要給大家介紹了關(guān)于DBeaver連接GBase數(shù)據(jù)庫的簡單步驟,需要的朋友可以參考下2024-03-03
關(guān)于Rsa Public Key not Find的問題及解決
這篇文章主要介紹了關(guān)于Rsa Public Key not Find的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07

