Dbeaver做數(shù)據(jù)遷移的詳細(xì)過程記錄
1、選擇源頭數(shù)據(jù)庫(kù)的表、鼠標(biāo)右擊、選擇導(dǎo)出數(shù)據(jù)
2、在數(shù)據(jù)轉(zhuǎn)化彈框中,雙擊 ‘數(shù)據(jù)庫(kù),數(shù)據(jù)表’ 那一欄
3、選擇目標(biāo)數(shù)據(jù)庫(kù),調(diào)整字段類型映射關(guān)系
4、調(diào)整字段的映射關(guān)系
目前遇到的字段類型,只有 int,bigint 轉(zhuǎn) number 類型
再就是VARCHAR2 長(zhǎng)度不夠的,加長(zhǎng)度,超過4000的就改為clob類型
5、勾選‘打開新連接’,‘選擇行計(jì)數(shù)’
6、點(diǎn)擊開始
7、注意事項(xiàng)
A、如果是Oracle轉(zhuǎn)Oracle,同類型的數(shù)據(jù)庫(kù)遷移,就不用管字段類型的映射關(guān)系了
B、如果字段的映射不對(duì)就會(huì)報(bào)錯(cuò),或者表創(chuàng)建了,但數(shù)據(jù)沒有進(jìn)去
C、遇到的字段類型,只有 int,bigint 轉(zhuǎn) number 類型
D、有些字段遷移后會(huì)變成小寫,需要后面手動(dòng)調(diào)整
可以用SQL查詢出所有的小寫字段
select column_name,table_name from user_tab_columns where regexp_like(column_name,'[a-z]');
E、VARCHAR2(200) 類型可能存在 實(shí)際長(zhǎng)度大于限制長(zhǎng)度的問題,會(huì)報(bào)錯(cuò)出來
超過4000的長(zhǎng)度,可以改為 clob 類型
F、VARCHAR2 類型如果沒有限制長(zhǎng)度,會(huì)報(bào)錯(cuò):“缺少括號(hào)”,加就可以了 VARCHAR2(200)
G、數(shù)據(jù)遷移后,對(duì)比兩個(gè)數(shù)據(jù)庫(kù)表的數(shù)量,可以使用SQL查詢數(shù)量
H、表遷移后,發(fā)現(xiàn)索引都沒有遷移
導(dǎo)致登錄的時(shí)候報(bào)錯(cuò):
java.lang.IllegalArgumentException: obj is null
處理方式:遷移索引后,問題就自動(dòng)好了
8、處理方式總結(jié)
A、導(dǎo)出時(shí),可以批量的處理,比如一次處理10個(gè)表,遇到報(bào)錯(cuò)就停止執(zhí)行,這樣后面再處理報(bào)錯(cuò)的表就可以了,其他表會(huì)都遷移了。報(bào)錯(cuò)的表需要?jiǎng)h除了,從新遷移。刪除表后,需要刷新數(shù)據(jù)庫(kù)。
B、批量遷移索引
使用SQL 查詢出SQL server 所有創(chuàng)建索引的語(yǔ)句。下面是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、批量處理語(yǔ)句后(兩種數(shù)庫(kù)的DDL語(yǔ)句有所差異),可以批量執(zhí)行。
可以全部一起執(zhí)行,或者一次執(zhí)行50條語(yǔ)句,遇到報(bào)錯(cuò)就停止,報(bào)錯(cuò)前的語(yǔ)句都執(zhí)行了,就可以刪除了。處理報(bào)錯(cuò)后,再執(zhí)行報(bào)錯(cuò)后面的語(yǔ)句。
有些不好處理的報(bào)錯(cuò),可以先不管,后面在手動(dòng)對(duì)表建索引就可以了
批量執(zhí)行DDL語(yǔ)句的方式
新開個(gè)窗口放DDL語(yǔ)句,SQL編輯器 --> 執(zhí)行SQL腳本
注意事項(xiàng):
SQL SERVE 遷移到 ORACLE 后,在 ‘數(shù)據(jù)庫(kù)表管理’ 頁(yè)面做表創(chuàng)建的時(shí)候,DDL語(yǔ)句會(huì)報(bào)錯(cuò),因?yàn)樽侄味际切懀叶技恿艘?hào),導(dǎo)致Oracle不能識(shí)別。需要?jiǎng)h除 D:\03_workspace\01_fenghua\02_server\fenghua-tmp-server\src\main\java\xyz\elidom\dbist\ddl\impl\DdlJdbc.java 文件,刪除后重啟后端,就可以了,
后面生成的DDL語(yǔ)句,字段就沒引號(hào)了,Oracle就可以正常創(chuàng)建表了。
總結(jié)
到此這篇關(guān)于Dbeaver做數(shù)據(jù)遷移的文章就介紹到這了,更多相關(guān)Dbeaver數(shù)據(jù)遷移內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
8 種常用的 NoSQL 數(shù)據(jù)庫(kù)系統(tǒng)對(duì)比分析
這篇文章主要介紹了8 種 NoSQL 數(shù)據(jù)庫(kù)系統(tǒng)對(duì)比,需要的朋友可以參考下2016-02-02SQL語(yǔ)句優(yōu)化之JOIN和LEFT JOIN 和 RIGHT JOIN語(yǔ)句的優(yōu)化
在數(shù)據(jù)庫(kù)的應(yīng)用中,我們經(jīng)常需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行多表查詢,然而當(dāng)數(shù)據(jù)量非常大時(shí)多表查詢會(huì)對(duì)執(zhí)行效率產(chǎn)生非常大的影響,因此我們?cè)谑褂肑OIN和LEFT JOIN 和 RIGHT JOIN語(yǔ)句時(shí)要特別注意2018-03-03在PostgreSQL中使用日期類型時(shí)一些需要注意的地方
這篇文章主要介紹了在PostgreSQL中使用日期類型時(shí)一些需要注意的地方,包括時(shí)間戳和日期轉(zhuǎn)換等方面,需要的朋友可以參考下2015-04-04eXtremeDB 6.0正式發(fā)布:提高擴(kuò)展性和分布式查詢速度
這篇文章主要介紹了eXtremeDB 6.0正式發(fā)布:提高擴(kuò)展性和分布式查詢速度,本文詳細(xì)介紹了全新的eXtremeDB 6.0的一些特性,需要的朋友可以參考下2014-10-10Dbeaver做數(shù)據(jù)遷移的詳細(xì)過程記錄
DBeaver是一款跨平臺(tái)的通用數(shù)據(jù)庫(kù)開源管理工具,支持 MySQL,PostgreSQL,Oracle,DB2,MSSQL,Sybase,Mimer,HSQLDB,Derby以及其他兼容JDBC的數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于Dbeaver做數(shù)據(jù)遷移的詳細(xì)過程,需要的朋友可以參考下2023-05-05建立在Tablestore的Wifi設(shè)備監(jiān)管系統(tǒng)架構(gòu)實(shí)現(xiàn)
一般大公司會(huì)有許多園區(qū),園區(qū)內(nèi)會(huì)有不同部門的同事在一起辦公。每個(gè)園區(qū)內(nèi)都要配備大量的Wifi設(shè)備從而為園區(qū)同事提供方便的上網(wǎng)服務(wù)。因此,集團(tuán)需要一套完善的監(jiān)管系統(tǒng)維護(hù)所有的Wifi設(shè)備。需要的朋友來一起學(xué)習(xí)下吧2019-05-05