Amazon

2015年3月7日土曜日

データベースのdiff

schemacrawlerを使うとデータベースのスキーマやデータをdiffできるテキストで出力してくれます。
mysqlにscottデータベースを作り、ETLツールで別スキーマにコピーしたテーブルやデータが同じか確認してみます。
下記のコマンドでempテーブル構造が同じか確認することができます。
結果をみると、DECIMAL型がFLOAT型に変わっていることとリレーションやインデックスはコピーされていないことがわかります。
vagrant@trusty64:~/work/sc/schemacrawler-12.04.02-main/_schemacrawler$ diff -u <(./sc.sh --server=mysql -url=jdbc:mysql://192.168.10.10/scott -u=scott -password=tiger -c=details -infolevel=maximum -schemas=scott -tables=scott.e.* -tabletype=TABLE) <(./sc.sh --server=mysql -url=jdbc:mysql://192.168.10.10/scott -u=scott -password=tiger -c=details -infolevel=maximum -schemas=sample -tables=sample.e.* -tabletype=TABLE)
--- /dev/fd/63  2015-03-07 22:44:57.908930201 +0900
+++ /dev/fd/62  2015-03-07 22:44:57.908930201 +0900
@@ -1523,26 +1523,20 @@
  
-scott.emp
+sample.emp
 ------------------------------------------------------------------------
                                                                  [table]
-  empno                             DECIMAL(4, 0) NOT NULL      
+  empno                             FLOAT(4, 0) NOT NULL        
   ename                             VARCHAR(10)                 
   job                               VARCHAR(9)                  
-  mgr                               DECIMAL(4, 0)               
-  hiredate                          DATE                        
-  sal                               DECIMAL(7, 2)               
-  comm                              DECIMAL(7, 2)               
-  deptno                            DECIMAL(2, 0)               
+  mgr                               FLOAT(4, 0)                 
+  hiredate                          DATETIME                    
+  sal                               FLOAT(7, 2)                 
+  comm                              FLOAT(7, 2)                 
+  deptno                            FLOAT(2, 0)                 
 
 `PRIMARY`                                                  [primary key]
   empno                             ascending                   
 
-emp_ibfk_1                                 [foreign key, with no action]
-  deptno --> scott.dept.deptno                                  
-
-deptno                                                [non-unique index]
-  deptno                            ascending                   
-

vagrant@trusty64:~/work/sc/schemacrawler-12.04.02-main/_schemacrawler$ 

dumpコマンドを使うとデータをダンプした結果も比較することができます。
データ量が多いと厳しいですが件数の少ないマスタを選択して比較しておく用途には使えそうです。
vagrant@trusty64:~/work/sc/schemacrawler-12.04.02-main/_schemacrawler$ diff -u <(./sc.sh --server=mysql -url=jdbc:mysql://192.168.10.10/scott -u=scott -password=tiger -c=details,dump -infolevel=maximum -schemas=scott -tables=scott.dept -tabletype=TABLE) <(./sc.sh --server=mysql -url=jdbc:mysql://192.168.10.10/scott -u=scott -password=tiger -c=details,dump -infolevel=maximum -schemas=sample -tables=sample.dept -tabletype=TABLE)
--- /dev/fd/63  2015-03-07 22:47:50.486150549 +0900
+++ /dev/fd/62  2015-03-07 22:47:50.486150549 +0900
@@ -1523,19 +1523,16 @@
 
-scott.dept
+sample.dept
 ------------------------------------------------------------------------
                                                                  [table]
-  deptno                            DECIMAL(2, 0) NOT NULL      
+  deptno                            FLOAT(2, 0) NOT NULL        
   dname                             VARCHAR(14)                 
   loc                               VARCHAR(13)                 
 
 `PRIMARY`                                                  [primary key]
   deptno                            ascending                   
 
-emp_ibfk_1                                 [foreign key, with no action]
-  deptno <-- scott.emp.deptno                                   
-
 
@@ -1544,13 +1541,13 @@
 
-scott.dept
+sample.dept
 ------------------------------------------------------------------------
 deptno dname   loc
-10     accounting      new york
-20     research        dallas
-30     sales   chicago
-40     operations      boston
+10.0   accounting      new york
+20.0   research        dallas
+30.0   sales   chicago
+40.0   operations      boston
 
vagrant@trusty64:~/work/sc/schemacrawler-12.04.02-main/_schemacrawler$ 

0 件のコメント: