2 datax mysql 和 mysql之间相互导入
生活随笔
收集整理的這篇文章主要介紹了
2 datax mysql 和 mysql之间相互导入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
插件文檔; https://github.com/alibaba/DataX/blob/master/hdfswriter/doc/hdfswriter.md 1,參照第1篇日記,安裝好datax 2,使用命令生成mysql導入導出的json模板, 修改模板 python datax.py -r mysqlreader -w mysqlwriter { "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "column": [ "id", "username" ], "connection": [ { "jdbcUrl": ["jdbc:mysql://192.168.43.20:3306/uprofiledb"], "table": ["pe_user"] } ], "password": "111111", "username": "root", "where": "" } }, "writer": { "name": "mysqlwriter", "parameter": { "column": ["id","username"], "connection": [ { "jdbcUrl": "jdbc:mysql://192.168.43.20:3306/test", "table": ["target_user"] } ], "password": "111111", "preSql": [], "session": [], "username": "root", ??"writeMode": "insert" } } } ], "setting": { "speed": { "channel": "1" } } } } 參數說明: * jdbcUrl * 描述:描述的是到對端數據庫的JDBC連接信息,使用JSON的數組描述,并支持一個庫填寫多個連接地址。之所以使用JSON數組描述連接信息,是因為阿里集團內部支持多個IP探測,如果配置了多個,MysqlReader可以依次探測ip的可連接性,直到選擇一個合法的IP。如果全部連接失敗,MysqlReader報錯。 注意,jdbcUrl必須包含在connection配置單元中。對于阿里集團外部使用情況,JSON數組填寫一個JDBC連接即可。 jdbcUrl按照Mysql官方規范,并可以填寫連接附件控制信息。具體請參看Mysql官方文檔。 * 必選:是 * 默認值:無 * username * 描述:數據源的用戶名 * 必選:是 * 默認值:無 * password * 描述:數據源指定用戶名的密碼 * 必選:是 * 默認值:無 * table * 描述:所選取的需要同步的表。使用JSON的數組描述,因此支持多張表同時抽取。當配置為多張表時,用戶自己需保證多張表是同一schema結構,MysqlReader不予檢查表是否同一邏輯表。注意,table必須包含在connection配置單元中。 * 必選:是 * 默認值:無 * column * 描述:所配置的表中需要同步的列名集合,使用JSON的數組描述字段信息。用戶使用*代表默認使用所有列配置,例如['*']。 支持列裁剪,即列可以挑選部分列進行導出。 支持列換序,即列可以不按照表schema信息進行導出。 支持常量配置,用戶需要按照Mysql SQL語法格式: ["id", "`table`", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3" , "true"] id為普通列名,`table`為包含保留在的列名,1為整形數字常量,'bazhen.csy'為字符串常量,null為空指針,to_char(a + 1)為表達式,2.3為浮點數,true為布爾值。 * 必選:是 * 默認值:無 * splitPk * 描述:MysqlReader進行數據抽取時,如果指定splitPk,表示用戶希望使用splitPk代表的字段進行數據分片,DataX因此會啟動并發任務進行數據同步,這樣可以大大提供數據同步的效能。 推薦splitPk用戶使用表主鍵,因為表主鍵通常情況下比較均勻,因此切分出來的分片也不容易出現數據熱點。 目前splitPk僅支持整形數據切分,不支持浮點、字符串、日期等其他類型。如果用戶指定其他非支持類型,MysqlReader將報錯! * 如果splitPk不填寫,包括不提供splitPk或者splitPk值為空,DataX視作使用單通道同步該表數據。 * 必選:否 * 默認值:空 * where * 描述:篩選條件,MysqlReader根據指定的column、table、where條件拼接SQL,并根據這個SQL進行數據抽取。在實際業務場景中,往往會選擇當天的數據進行同步,可以將where條件指定為gmt_create > $bizdate 。注意:不可以將where條件指定為limit 10,limit不是SQL的合法where子句。 where條件可以有效地進行業務增量同步。如果不填寫where語句,包括不提供where的key或者value,DataX均視作同步全量數據。 * 必選:否 * 默認值:無 * querySql * 描述:在有些業務場景下,where這一配置項不足以描述所篩選的條件,用戶可以通過該配置型來自定義篩選SQL。當用戶配置了這一項之后,DataX系統就會忽略table,column這些配置型,直接使用這個配置項的內容對數據進行篩選,例如需要進行多表join后同步數據,使用select a,b from table_a join table_b on table_a.id = table_b.id 當用戶配置querySql時,MysqlReader直接忽略table、column、where條件的配置,querySql優先級大于table、column、where選項。 * 必選:否 * 默認值:無 *writeMode *描述:寫入目標數據表的模式,可選項: replace(替換),update(更新),insert(插入) 3 據庫表和數據準備:? 4,執行插入命令: python datax.py??mysql2mysql.json? 5。查看目標表數據: 6,如果再次執行一次,就會報臟數據的錯誤,因為上面你的writemode使用的是insert。 7。 如果在源數據表增加一條數據,配置不變得情況下,再次執行。前面4條舊數據不會更新到目標表,而新增的這條數據會新增 來源表新增數據: 執行以后。目標表數據: 如果保證更改舊數據和新增的數據 都能同時更新到目標表,writemode使用 update 配置文件: 來源數據表: 目標數據表: 9, 如果writemode 是replace,應該是全量替換的意思: 這個時候導入就不會報錯。 配置文件: 來源數據表: 目標數據表:
轉載于:https://www.cnblogs.com/spicy/p/11155510.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的2 datax mysql 和 mysql之间相互导入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WCF传递强类型DataSet【源码】
- 下一篇: ASP.NET自定义控件组件开发 第一章