需要將gbase8a中的業務資料遷移到mysql5.6中,通過kettle遷移特別慢,通過datax遷移資料是kettle的三倍。
基於gbase8a 業務表中的rowid切片,實現資料的遷移,當然也可以使用分頁,用rowid還可以輕鬆實現增量資料的遷移 (業務表無自增id和自增時間戳的情況),這裡只記錄一下rowd功能測試
gbase8a 8.6.2.43-r7-free.110605
mysql5.7.29
datax同步指令碼在部落格裡有
rowid是乙個整型資料,預設值是從0開始的,插入一條記錄,自動增長1
gbase> select *,rowid from test;
±-----±-----±------+
| name | info | rowid |
±-----±-----±------+
| a | b | 0 |
| b | b | 1 |
| c | c | 2 |
| d | d | 3 |
| e | e | 4 |
±-----±-----±------+
刪除中間rowid=1的記錄,再插入一條記錄,看看rowid是否能被重用
gbase>delete from test where name=『b』;
gbase> select *,rowid from test;
±-----±-----±------+
| name | info | rowid |
±-----±-----±------+
| a | b | 0 |
| c | c | 2 |
| d | d | 3 |
| e | e | 4 |
插入一條新記錄,檢視rowid=1是否被重用,還是重新分配
gbase> insert into test values(『f』,『f』);
gbase> select *,rowid from test;
±-----±-----±------+
| name | info | rowid |
±-----±-----±------+
| a | b | 0 |
| c | c | 2 |
| d | d | 3 |
| e | e | 4 |
| f | f | 5 |
±-----±-----±------+
結果:rowid沒有並重要,重新分配的
那麼刪除最後一條記錄呢
gbase> delete from test where name=『f』;
gbase> select *,rowid from test;
±-----±-----±------+
| name | info | rowid |
±-----±-----±------+
| a | b | 0 |
| c | c | 2 |
| d | d | 3 |
| e | e | 4 |
±-----±-----±------+
gbase> exit
bye這裡先把資料庫重新啟動一下
[gbase@lineqi ~]$ gbase.server stop
shutting down gbase… success!
[gbase@lineqi ~]$ gbase.server start
starting gbase. success!
[gbase@lineqi ~]$ gbase
gbase> insert into test values(『h』,『h』);
gbase> select *,rowid from test;
±-----±-----±------+
| name | info | rowid |
±-----±-----±------+
| a | b | 0 |
| c | c | 2 |
| d | d | 3 |
| e | e | 4 |
| h | h | 6 |
*結果:rowid並不是延用5,而重新分配的6
truncate table後,再重新插入呢
gbase> truncate table test;
query ok, 5 rows affected (elapsed: 00:00:00.02)
gbase> insert into test values(『h』,『h』);
gbase> select *,rowid from test;
±-----±-----±------+
| name | info | rowid |
±-----±-----±------+
| h | h | 0 |
±-----±-----±------+
重新從0開始計算
1、rowid是乙個整型字段,起始值為0,每插入一條記錄,自動加1
2、刪除表中的記錄,對應的rowid不會被新記錄重用
3、基於rowid切片,實現資料遷移
4、基於rowid,可以輕鬆實現資料的增量遷移
5、truncate table後,新插入的記錄,從0開始,這點與mysql是一樣的
然而現場的情況,基於rowid實現起來還是有出入
1、rowid最大值取值是多少?從**可以查詢到?
2、gbase8a每個版本的rowid取值都是一樣的
GBase8g向GBase8s資料庫進行遷移
gbase8g向gbase8s資料庫進行遷移背景 因業務需求,需要將以往專案使用的gbase8g資料庫中的資料,遷移到gbase8s資料庫中。在此記錄遷移遇到的一些問題和解決方法。目標將gbase8g的資料成功遷移到gbase8t後,原有程式功能可以正常執行 問題列表 自定義排序 1 問題描述 由於...
GBase8s MyBatis 操作示例
gbase8s spring boot mybatis 操作示例 本文將建立乙個簡單的 spring boot 專案結構,並演示如何使用 mybatis 進行gbase 8s 資料庫的資料 處理工作 插入,選擇,更新和刪除 以及分頁顯示。mybatis xml方式 本文我們會使用 mybatis s...
GBase8a匯出和載入資料步驟
一 ssh工具連線伺服器 二 切換gbase使用者 執行su gbase命令 三 執行gccli命令,進入sql命令 四 執行sql語句,把需要匯出的表匯出到指定目錄 select from mid.into outfile opt gbase dispatch server txt fieldst...