1. 建立測試表,插入資料。
use test;
create table t_color (
id int unsigned not null auto_increment primary key,
color varchar(10)
) engine=myisam;
insert into t_color (color) values('black'),('green'),('red'),('blue');
select * from t_color;
2. 建立快照表。
use test;
create table t_color_stg engine=myisam as select * from t_color ;
select * from t_color_stg;
3. 建立目標表。
use test;
create table dim_color engine=myisam as select * from t_color ;
select * from dim_color;
4. 建立基於快照的cdc轉換
說明:5. 測試
-- 執行轉換
-- 檢視dim_color表
mysql> select * from dim_color;
+----+--------+
| id | color |
+----+--------+
| 1 | black |
| 2 | green |
| 3 | red |
| 4 | blue |
+----+--------+
4 rows in set (0.00 sec)
-- 修改資料
delete from t_color where id=3;
update t_color set color='grey' where id=1;
insert into t_color (color) values('yellow');
-- 執行轉換
-- 檢視dim_color表
mysql> select * from dim_color;
+----+--------+
| id | color |
+----+--------+
| 1 | grey |
| 2 | green |
| 5 | yellow |
| 4 | blue |
+----+--------+
4 rows in set (0.00 sec)
6. 總結
比較的sql語句如下:
select 'u' as flag, t2.id as id, t2.color as color
from t_color_stg t1 inner join t_color t2 on t1.id = t2.id
where t1.color != t2.color
union all
select 'd' as flag, t1.id as id, t1.color as color
from t_color_stg t1 left join t_color t2 on t1.id = t2.id
where t2.id is null
union all
select 'i' as flag, t2.id as id, t2.color as color
from t_color as t2 left join t_color_stg as t1 on t2.id = t1.id
where t1.id is null;
結果如下:
+------+----+--------+
| flag | id | color |
+------+----+--------+
| u | 1 | grey |
| d | 3 | red |
| i | 5 | yellow |
+------+----+--------+
3 rows in set (0.00 sec)
利用oracle快照實現兩台資料庫伺服器表同步
利用oracle快照實現兩台資料庫伺服器表同步。舉例,如源資料庫a,目標資料庫b,資料庫b需要同步資料庫a的表cross,具體步驟如下 1 首先在資料庫b中建立dblink create database link create database link db link test connect ...
在kettle使用迴圈來處理表中的資料
有時候,如果kettle事務中源表的資料非常大的時候,一下子把源表中的資料全部讀入記憶體的方式是不可取的。在mysql中,我們可以通過迴圈的方式,使用limit來定量取得一部分資料來處理。即,關鍵的sql是 select from table name limit current value,ste...
sphinx在php檔案裡使用及返回資料的格式
引入sphinx搜尋類檔案 require sphinxapi.php 例項化sphinx搜尋類 cl new sphinxclient 連線伺服器,埠 cl setserver 192.168.1.250 9312 超時時間3秒,3秒連不上放棄 cl setconnecttimeout 3 是以陣...