精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一個數據開發人員使用的輔助工具

運維 數據庫運維
這是為數據開發人員使用的輔助工具,用于數據庫之間的表同步,說同步并不嚴謹,因為不是實時更新的,更確切的說法是復制,可以方便的從一個數據庫復制表到另一個數據庫,以下遇到同步的詞請理解為復制。

 [[389867]]

介紹

需求背景:

有很多業務系統,他們的數據庫是相互獨立的,俗稱數據孤島,為了做數據統計分析,就需要把這些數據歸集在一個數據庫中,比如數據倉庫,然后多表關聯查詢,方便開發數據應用。希望能有這樣的工具,指定兩個數據庫和表名,就可以將表從源數據庫拷貝到目標數據庫中。具體需求如下:

  • 能自動同步表結構,如:源表加字段,目標表自動加字段。
  • 支持增量或全量復制數據,比如按日期進行復制數據。
  • 支持指定字段同步,只同步關心的那些字段。
  • 支持主流的關系型數據庫: mysql、db2、postgresql、oracle、sqlserver
  • 源表和目標表表名可以不同,字段名也可以不同(已存在目標表的情況下)

因為自己要用,我就自己寫了一個,順便熟悉下 java 開發(之前一直用 Python,不得不說,Java 真浪費時間),本程序的最大用處就是構建集市或數倉所需要的基礎層數據源,歡迎感興趣的朋友一起加入。

程序的使用方法

Docker 方式:

這里用到三個容器:

  • app 也就是主程序本身,app 容器使用的程序文件就是 release 目錄下的文件,已經做了綁定。
  • mysql 測試用的,作為源數據庫,已提前放好了有 7000 條測試數據的表 somenzz_users。
  • postgres 測試用的,作為目標數據庫,沒有數據。

先部署,執行 docker-compose up -d 就會自動完成應用和數據庫的部署:

 

  1. $ git clone https://github.com/somenzz/database-sync.git 
  2. $ cd database-sync 
  3. $ docker-compose up -d 
  4. Creating database-sync_postgres_1 ... done 
  5. Creating database-sync_app_1      ... done 
  6. Creating database-sync_mysql_1    ... done 

這樣三個容器就啟動了,使用 docker ps -a |grep database-sync 可以查看到三個正在運行的容器:

 

 

 

 

現在直接使用 docker exec -i database-sync_app_1 java -jar database-sync-1.3.jar 來執行程序:

 

 

 

 

mysql 容器已有測試數據,release/config/config.json 已經配置好了數據庫的連接,因此可以直接試用,以下演示的是從 mysql 復制表和數據到 postgres:

1. 全量復制,自動建表:

 

  1. docker exec -i database-sync_app_1 java -jar database-sync-1.3.jar mysql_test testdb somenzz_users postgres_test public users --sync-ddl 

 

 

 

如果你不想每次都敲 docker exec -i database-sync_app_1 ,可以進入容器內部執行:

 

  1. (py38env) ➜  database-sync git:(master) ✗ docker exec -it database-sync_app_1 /bin/bash 
  2. root@063b1dc76fe1:/app# ls 
  3. config database-sync-1.3.jar  lib  logs 
  4. root@063b1dc76fe1:/app# java -jar database-sync-1.3.jar mysql_test testdb somenzz_users postgres_test public users -sd 

2. 增量復制:

 

  1. root@063b1dc76fe1:/app# java -jar database-sync-1.3.jar mysql_test testdb somenzz_users postgres_test public zz_users "create_at >= '2018-01-09'" 

 

 

 

3. 指定字段:

 

  1. root@063b1dc76fe1:/app# java -jar database-sync-1.3.jar mysql_test testdb somenzz_users postgres_test public zz_users -ff="user_id,name,age" -tf="user_id,name,age" "create_at >= '2018-01-09'" 

 

 

 

普通方式

程序運行前確保已安裝 java 1.8 或后續版本,已經安裝 maven,然后 clone 源碼,打包:

 

  1. git clone https://gitee.com/somenzz/database-sync.git 
  2. cd database-sync 
  3. mvn package 

此時你會看到 target 目錄,將 target 下的 lib 目錄 和 database-sync-1.3.jar 復制出來,放在同一目錄下,然后再創建一個 config 目錄,在 config 下新建一個 config.json 文件寫入配置信息,然后將這個目錄壓縮,就可以傳到服務器運行了,請注意先充分測試,jdk 要求 1.8+

 

  1. [aaron@hdp002 /home/aaron/App/Java/database-sync]$ ls -ltr 
  2. total 48 
  3. drwxr-xr-x 2 aaron aaron  4096 Apr 23  2020 lib 
  4. -rwxrw-r-- 1 aaron aaron   157 Jun 23  2020 run.sh 
  5. drwxrwxr-x 2 aaron aaron  4096 Jul  3  2020 logs 
  6. -rw-rw-r-- 1 aaron aaron 24773 Mar 16  2021 database-sync-1.3.jar 
  7. drwxr-xr-x 7 aaron aaron  4096 Aug  3  2020 jdk1.8.0_231 
  8. drwxrwxr-x 2 aaron aaron  4096 Feb 19 17:07 config 

你也可以直接下載我打包好的使用。

程序名稱叫 database-sync,運行方式是這樣的:

 

  1. (py38env) ➜  target git:(master) ✗ java -jar database-sync-1.3.jar -h       
  2. Usage:  
  3. java -jar database-sync-1.0.jar [options] {fromDB} {fromSchema} {fromTable} {toDB} {toSchema} {toTable} [whereClause] 
  4. options: 
  5.         -v or --version                            :print version then exit 
  6.         -h or --help                               :print help info then exit 
  7.         -sd or --sync-ddl                          :auto synchronize table structure 
  8.         -ff=col1,col2 or --from-fields=col1,col2   :specify from fields 
  9.         -tf=col3,col4 or --to-fields=col3,col4     :specify to fields 
  10.         --no-feature or -nf                        :will not use database's feature 

幫助說明:

[] 中括號里的內容表示選填,例如 [options] 表示 options 下的參數不是必須的。

1、其中 options 參數解釋如下:

  • --sync-ddl 或者 -sd : 加入該參數會自動同步表結構。
  • --from_fields=col1,col2 或者 -ff=col1,col2 : 指定原表的字段序列,注意 = 前后不能有空格。
  • --to_fields=col3,col4 或者 -tf=col3,col4 : 指定目標表的字段序列,注意 = 前后不能有空格。

2、whereClause 表示 where 條件,用于增量更新,程序再插入數據前先按照 where 條件進行清理數據,然后按照 where 條件從原表進行讀取數據。whereClause 最好使用雙引號包起來,表示一個完整的參數。如:"jyrq='2020-12-31'"

{} 大括號里的內容表示必填。

fromDb 是指配置在 config.json 的數據庫信息的鍵,假如有以下配置文件:

 

  1.       "postgres":{ 
  2.         "type":"postgres"
  3.         "driver":"org.postgresql.Driver"
  4.         "url":"jdbc:postgresql://localhost:5432/apidb"
  5.         "user""postgres"
  6.         "password":"aaron"
  7.         "encoding""utf-8" 
  8.     }, 
  9.  
  10.  
  11.     "aarondb":{ 
  12.         "type":"mysql"
  13.         "driver":"com.mysql.cj.jdbc.Driver"
  14.         "url":"jdbc:mysql://localhost:3306/aarondb?useSSL=false&characterEncoding=utf8&serverTimezone=UTC"
  15.         "user""aaron"
  16.         "password":"aaron" 
  17.     } 

fromDb、toDb 可以是 aarondb 或者 postgres。

  • fromSchema 讀取數據的表的模式名,可以填寫 "".
  • fromTable 讀取數據的表明,必須提供。
  • toSchema 寫入數據表的模式名,可以填寫 "",可以和 fromSchema 不同.
  • toTable 寫入數據表的表名,必須提供,當寫入表不存在時,自動按讀取表的表結構創建,可以和 fromTable 不同。

全量、增量、指定字段的使用樣例請參考 Docker 方式。

配置文件說明

配置文件位于 config/config.json,如下所示:

 

  1.     "sjwb":{ 
  2.         "type":"db2"
  3.         "driver":"com.ibm.db2.jcc.DB2Driver"
  4.         "url":"jdbc:db2://192.168.1.*:50000/wbsj"
  5.         "user""****"
  6.         "password":"****"
  7.         "tbspace_ddl""/*這里可以放置指定表空間的語句*/"
  8.         "encoding":"utf-8" 
  9.     }, 
  10.  
  11.     "dw_test":{ 
  12.         "type":"db2"
  13.         "driver":"com.ibm.db2.jcc.DB2Driver"
  14.         "url":"jdbc:db2://192.168.169.*:60990/dwdb"
  15.         "user""****"
  16.         "password":"****"
  17.         "encoding":"gbk" 
  18.     }, 
  19.  
  20.     "postgres":{ 
  21.         "type":"postgres"
  22.         "driver":"org.postgresql.Driver"
  23.         "url":"jdbc:postgresql://10.99.**.**:5432/apidb"
  24.         "user""****"
  25.         "password":"****"
  26.         "tbspace_ddl""WITH (compression=no, orientation=orc, version=0.12)\ntablespace hdfs\n"
  27.         "encoding":"utf-8" 
  28.     }, 
  29.  
  30.  
  31.     "aarondb":{ 
  32.         "type":"mysql"
  33.         "driver":"com.mysql.cj.jdbc.Driver"
  34.         "url":"jdbc:mysql://localhost:3306/aarondb?useSSL=false&characterEncoding=utf8&serverTimezone=UTC"
  35.         "user""****"
  36.         "password":"****"
  37.         "encoding":"utf-8" 
  38.     }, 
  39.  
  40.     "buffer-rows": 100000 

配置文件說明:

type 表示數據庫類型,均為小寫:

  • mysql
  • postgres
  • db2
  • oracle
  • sqlserver

tbspace_ddl 表示自動建表時指定的表空間,該選項不是必需的,可以刪除。

buffer-rows 表示讀取多少行時一塊寫入目標數據庫,根據服務器內存大小自己做調整,100000 行提交一次滿足大多數情況了。

encoding 用于表結構同步時確定字段長度,比如說源庫的字段是 gbk varchar(10),目標庫是 utf-8,那么就應該為 varchar(15),這樣字段有中文就不會出現截斷或插入失敗問題,程序這里 2 倍,也就是 varchar(20) ,這樣字段長度不會出現小數位。

最后的話

提高數據庫間表的復制效率,如果不需要對源表字段進行轉換,就丟掉低效的 datastage 和 kettle 吧。

 

責任編輯:華軒 來源: Python七號
相關推薦

2012-05-25 13:19:48

Web

2019-06-03 14:20:30

Java數據庫大數據工具

2012-11-30 09:42:48

iOS開發輔助工具資源

2013-11-21 10:56:33

iOS工具資源

2020-06-09 07:57:47

前端開發代碼

2024-07-31 08:50:20

2019-08-14 15:56:23

2012-05-14 18:35:20

Windows Pho

2018-04-08 10:08:43

開發人員工具

2021-04-12 22:24:01

Java開發程序員

2021-11-12 06:03:10

開發人員開發安全意識

2019-10-25 10:21:10

React 工具JavaScript

2013-06-13 10:15:20

WebWeb工具Web開發人員

2021-01-13 22:50:21

開發Web工具

2023-08-30 08:01:37

前端CSS

2012-03-20 13:58:50

JavaScript

2015-02-10 09:24:04

Web開發JavaScript工具

2010-11-02 15:26:32

MVC開發工具

2014-02-26 11:18:02

Android開發偷懶高效

2012-07-20 10:46:44

Web
點贊
收藏

51CTO技術棧公眾號

国产在线天堂www网在线观看| 国产喷水福利在线视频| 国产探花一区在线观看| 欧美人xxxx| 欧美又粗又长又爽做受| 欧美高清成人| 国产高清一区日本| 日本人成精品视频在线| 亚洲欧美小视频| 亚洲电影一级片| 欧美一区二区三区婷婷月色| 国产在线精品91| 男人和女人做事情在线视频网站免费观看| 风流少妇一区二区| 国产又爽又黄的激情精品视频 | 97人妻精品一区二区三区软件| 国产精品mm| 中文字幕亚洲欧美| 国产精品久久久免费观看| www.久久热| 色狠狠桃花综合| 久久艹国产精品| 日本福利专区在线观看| 91蜜桃视频在线| 99免费在线视频观看| 国产偷人爽久久久久久老妇app| 黄色亚洲在线| 久久成人av网站| 在线视频第一页| 日韩精品欧美大片| 欧美xingq一区二区| 中文字幕视频三区| 黑人一区二区三区| 色成人在线视频| 黄色免费视频大全| 草草视频在线| 亚洲大片在线观看| 日韩欧美猛交xxxxx无码| 日本最新在线视频| 国产精品久久久久久亚洲毛片| 久久久久久精| 日韩美女一级视频| 99久精品国产| 久久久久久艹| 国产最新视频在线| 久久日韩粉嫩一区二区三区| 久久久一本精品99久久精品66| 黄频在线免费观看| 成人网页在线观看| 国产精品免费一区二区三区观看| 国产三级三级在线观看| 国内欧美视频一区二区| 成人性生交大片免费看视频直播| 在线观看中文字幕码| 蜜桃免费网站一区二区三区| 国产精品久久久久秋霞鲁丝| 999视频在线| 男女激情视频一区| 91精品国产自产在线| 一级全黄裸体免费视频| 国产在线麻豆精品观看| 91久久偷偷做嫩草影院| 男人天堂综合网| 99精品视频在线免费观看| 精品欧美一区二区久久久伦 | 国产亚洲精品成人av久久ww| 中文字幕网站在线观看| 欧美日韩一区二区三区视频播放| 在线日韩第一页| 日本 欧美 国产| 午夜精品久久| 97在线看福利| 无码人妻精品一区二区三区9厂| 日韩和欧美一区二区三区| 国产精品香蕉在线观看| a天堂视频在线| 波多野结衣亚洲一区| 欧美精品一区二区三区在线四季 | 97免费在线视频| 精品人妻一区二区色欲产成人| 视频一区二区欧美| 91精品在线播放| 黄色av小说在线观看| 91视频在线观看免费| 亚洲欧美日韩国产yyy| av毛片在线| 狠狠久久五月精品中文字幕| 亚洲色图久久久| 亚洲精品视频一二三区| 亚洲美女福利视频网站| 顶级黑人搡bbw搡bbbb搡| 欧美日韩国产色综合一二三四| 97精品视频在线观看| 国产一级片免费视频| 国产一区不卡视频| 久久久久资源| 黄a在线观看| 狠狠色噜噜狠狠狠狠97| 久久人人爽av| 亚洲欧美tv| 久久av.com| 久久精品五月天| 国产高清视频一区| 日韩影视精品| 三妻四妾的电影电视剧在线观看| 欧美精品第1页| 亚洲第一成人网站| 欧美精品网站| 国产精品久久久久久久久久小说| 亚洲国产精品18久久久久久| 中文字幕第一区第二区| 欧美极品欧美精品欧美| 精品一区二区三区亚洲| 国产午夜精品美女视频明星a级| 久草视频免费在线播放| 久久精品国产色蜜蜜麻豆| 蜜桃网站成人| 欧美xxxx少妇| 欧美日韩1区2区| 欧美做受高潮6| 99视频+国产日韩欧美| 亚洲自拍欧美另类| av片在线看| 91极品视觉盛宴| 六十路息与子猛烈交尾| 欧美精品一区二区三区久久久竹菊| 国产精品亚洲片夜色在线| 三级视频在线| 精品福利免费观看| 麻豆短视频在线观看| 亚洲激情中文在线| 国产欧美一区二区三区视频| 每日更新在线观看av| 精品国产乱码久久久久久天美| 美女被爆操网站| 亚洲啊v在线观看| 国产日韩精品在线观看| av在线第一页| 欧美日韩在线观看一区二区| 影音先锋制服丝袜| 日韩高清欧美激情| 日韩高清dvd| 国产精品亚洲d| 在线一区二区日韩| 中文字幕资源网| 国产精品久久久一区麻豆最新章节| 女人另类性混交zo| 久久最新网址| 国产精品jizz在线观看麻豆| 韩国中文免费在线视频| 在线观看区一区二| 国产福利在线导航| 韩国理伦片一区二区三区在线播放| 宅男一区二区三区| 精品一区二区三区四区五区 | 国产精品一区二区你懂的| 欧洲xxxxx| 日韩一级淫片| 久久久亚洲精品视频| 天堂成人在线观看| 日韩欧美亚洲范冰冰与中字| 国产美女免费无遮挡| 日本欧美一区二区在线观看| 亚洲欧洲免费无码| 欧美经典一区| 97在线视频观看| 国产一区精品| 欧美夫妻性生活| 久久久久久久9999| 91啦中文在线观看| 91网址在线播放| 欧美成人一品| 久久66热这里只有精品| av成人在线看| 欧美激情精品久久久久久免费印度 | 亚洲成人a级网| 国语对白永久免费| 国产精品久久久久久久久久免费看 | av在线免费观看国产| 第一区第二区在线| 国产成人97精品免费看片| 色视频在线免费观看| 欧美大胆一级视频| 中文字幕精品无码一区二区| 中文字幕一区二区三区四区| 亚洲av综合色区无码另类小说| 午夜一区不卡| 日本一区二区三区四区五区六区| 国产精品极品国产中出| 国产精品美女999| 日本在线观看大片免费视频| 亚洲色图美腿丝袜| 精品人妻无码一区二区三区蜜桃一| 五月天激情综合| 多男操一女视频| 26uuu国产日韩综合| 亚洲怡红院在线| 国产精品综合| 成人高清dvd| sdde在线播放一区二区| 国产精品一区二| 日韩精品第二页| 欧美最顶级丰满的aⅴ艳星| 黄色av电影在线播放| 亚洲欧美另类在线观看| av高清一区二区| 欧美视频精品在线| 欧美一级特黄视频| 一区av在线播放| 美国精品一区二区| 久久综合色婷婷| 亚洲精品乱码久久久久久蜜桃欧美| 免费看日韩精品| 男人靠女人免费视频网站| 亚洲国产精品久久久天堂 | 国产大片在线免费观看| 精品欧美一区二区在线观看| 亚洲熟妇无码久久精品| 欧美性xxxx在线播放| 日本少妇吞精囗交| 夜夜亚洲天天久久| 欧美日韩黄色网| 国产精品久久毛片av大全日韩| 一卡二卡三卡四卡| 99久久综合99久久综合网站| 色哟哟免费视频| 国模娜娜一区二区三区| 国产wwwxx| 日韩不卡一二三区| 国产精品涩涩涩视频网站| 一区二区三区国产在线| 久久av综合网| 伊人久久久大香线蕉综合直播| 糖心vlog在线免费观看| 婷婷综合五月| 自拍视频一区二区三区| 久久亚洲国产| 一本色道久久综合亚洲二区三区 | 亚洲精品毛片| 国产精品视频资源| 农村妇女一区二区| 91精品久久久久久久久久入口| 国产精品久久久久久妇女| 国产精品草莓在线免费观看| 色老太综合网| 国产精品高潮呻吟久久av野狼| 456亚洲精品成人影院| 国产成人亚洲综合91| 精品免费av在线| 国产精品pans私拍| 国产第一精品| 91久久综合亚洲鲁鲁五月天| 国产高清日韩| yellow视频在线观看一区二区| 伊人精品久久| 精品久久蜜桃| 欧美欧美黄在线二区| 日韩资源av在线| 欧美激情国产在线| 欧美a级黄色大片| 欧美精品国产一区二区| 黄网站欧美内射| 久久久综合网| 国内外成人免费在线视频| 久久99久久久欧美国产| 免费国偷自产拍精品视频| 成人app下载| 免费一级做a爰片久久毛片潮| 欧美经典一区二区| 91嫩草丨国产丨精品| 亚洲自拍与偷拍| 欧美三级韩国三级日本三斤在线观看| 午夜视黄欧洲亚洲| 波多野结衣在线观看一区| 欧美一区二区三区电影| 婷婷视频在线观看| 中文字幕国产亚洲2019| 91三级在线| 热99精品只有里视频精品| 亚洲色图图片| 久久99蜜桃综合影院免费观看| 欧美一区二区三| 91.com在线| 日韩国产在线观看| aaa黄色大片| 欧美国产在线观看| 青青草手机在线视频| 欧美香蕉大胸在线视频观看| 国产又大又长又粗| 日韩精品在线观| 久久久久久国产精品免费无遮挡| 国模视频一区二区三区| 久久久久久久性潮| 精品欧美一区二区久久久伦 | 欧美变态另类刺激| 久久精品国产99| 日本xxxx裸体xxxx| 亚洲六月丁香色婷婷综合久久 | 欧美大片日本大片免费观看| 暖暖视频在线免费观看| 欧美激情免费在线| 91大神在线观看线路一区| 国产高清精品一区| 91青青国产在线观看精品| 午夜免费福利小电影| 韩国av一区二区三区四区| 色噜噜日韩精品欧美一区二区| 亚洲精品成人精品456| 日韩精选在线观看| 亚洲国产精品久久久久秋霞不卡| 色网站在线看| 国产精品久久久久久久久久久久久 | 精品国产乱码久久| 黄色小网站在线观看| 国产97在线播放| 久久男人av| 欧美中文字幕在线观看视频| 久久99热狠狠色一区二区| 精品无码人妻一区二区免费蜜桃| 亚洲国产综合在线| 不卡av中文字幕| 精品国产自在精品国产浪潮| 成人线上视频| 精品日韩美女| 91久久黄色| 动漫美女无遮挡免费| 一区二区三区精品在线| 一区二区日韩在线观看| 在线精品91av| 97成人超碰| 午夜精品福利一区二区| 日韩高清在线电影| 亚洲人成人无码网www国产| 欧美日韩免费在线观看| 污污网站在线免费观看| 97视频com| 任你弄精品视频免费观看| 成人午夜精品久久久久久久蜜臀| 国产成人av网站| 免费在线观看国产精品| 日韩视频一区在线观看| 五月婷婷视频在线观看| 99在线视频播放| 欧美午夜a级限制福利片| 欧美日韩一区二区区| 一区二区三区中文免费| 亚洲第九十九页| 久久全国免费视频| 女同一区二区三区| 男人操女人逼免费视频| 久久久噜噜噜久久中文字幕色伊伊| 天天操天天摸天天干| 亚洲人成电影在线播放| 韩国成人在线| 精品国产无码在线| 国产盗摄女厕一区二区三区| 精品处破女学生| 日韩电影第一页| 国产一区二区精品调教| 最近看过的日韩成人| 国产精品1区2区| a v视频在线观看| 久久影院电视剧免费观看| 成人高清视频观看www| 日韩88av| 在线观看国产一级片| 自拍视频在线观看一区二区| 国产露脸91国语对白| 蜜臀久久99精品久久久无需会员| 91精品尤物| 116极品美女午夜一级| 国产清纯白嫩初高生在线观看91 | 搡老熟女老女人一区二区| 日韩欧美在线第一页| www.在线播放| 91精品国产99久久久久久红楼| 伊人久久婷婷| 日韩毛片无码永久免费看| 67194成人在线观看| 成人在线免费观看黄色| 欧洲精品国产| 国产一区二区福利| 少妇太紧太爽又黄又硬又爽| 自拍偷拍亚洲区| 国产精品传媒| 国产一二三区av| 亚洲国产三级在线| 成人影院免费观看| 97碰碰视频| 日韩av一级片| 国产无遮无挡120秒| 亚洲最大在线视频| 99久久人爽人人添人人澡| 男人舔女人下面高潮视频| 伊人色综合久久天天| 裸体xxxx视频在线| 国产精品播放| 久久成人久久爱| 无码人妻精品一区二区三区不卡| 久久99视频精品|