讀寫樣例
{
"job": {
"setting": {
"speed": {
"channel": 3
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "jydb",
"password": "jydb",
"column": [
"id",
"fund_code",
"underlying_security_id",
"component_share",
"creation_redemption_unit",
"estimate_cash_component",
"creation_cash_substitute",
"substitute_flag",
"trading_day"
],
"splitPk": "id",
"connection": [
{
"table": [
"dim_etf_info"
],
"jdbcUrl": [
"jdbc:mysql://192.168.**.**:33061/test"
]
}
]
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"writeMode": "insert",
"username": "root",
"password": "123456",
"column": [
"id",
"fund_code",
"underlying_security_id",
"component_share",
"creation_redemption_unit",
"estimate_cash_component",
"creation_cash_substitute",
"substitute_flag",
"trading_day"
],
"session": [
"set session sql_mode='ANSI'"
],
"preSql": [
"delete from dim_etf_info"
],
"connection": [
{
"jdbcUrl": "jdbc:mysql://10.26.114.11:3306/fl_db?useUnicode=true&characterEncoding=utf-8",
"table": [
"dim_etf_info"
]
}
]
}
}
}
]
}
}
2 .MysqlWriter
MysqlWriter 插件實作了寫入資料到 Mysql 主庫的目的表的功能。在底層實作上, MysqlWriter 通過 JDBC 連接配接遠端 Mysql 資料庫,并執行相應的 insert into … 或者 ( replace into …) 的 sql 語句将資料寫入 Mysql,内部會分批次送出入庫,需要資料庫本身采用 innodb 引擎。
參數說明
jdbcUrl
描述:目的資料庫的 JDBC 連接配接資訊。作業運作時,DataX 會在你提供的 jdbcUrl 後面追加如下屬性:yearIsDateType=false&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true
注意:1、在一個資料庫上隻能配置一個 jdbcUrl 值。這與 MysqlReader 支援多個備庫探測不同,因為此處不支援同一個資料庫存在多個主庫的情況(雙主導入資料情況)
2、jdbcUrl按照Mysql官方規範,并可以填寫連接配接附加控制資訊,比如想指定連接配接編碼為 gbk ,則在 jdbcUrl 後面追加屬性 useUnicode=true&characterEncoding=gbk。具體請參看 Mysql官方文檔或者咨詢對應 DBA。
必選:是
預設值:無
username
描述:目的資料庫的使用者名
必選:是
預設值:無
password
描述:目的資料庫的密碼
必選:是
預設值:無
table
描述:目的表的表名稱。支援寫入一個或者多個表。當配置為多張表時,必須確定所有表結構保持一緻。
注意:table 和 jdbcUrl 必須包含在 connection 配置單元中
必選:是
預設值:無
column
描述:目的表需要寫入資料的字段,字段之間用英文逗号分隔。例如: “column”: [“id”,“name”,“age”]。如果要依次寫入全部列,使用表示, 例如: “column”: [""]。
column配置項必須指定,不能留白!
注意:1、我們強烈不推薦你這樣配置,因為當你目的表字段個數、類型等有改動時,你的任務可能運作不正确或者失敗
2、 column 不能配置任何常量值
必選:是
預設值:否
session
描述: DataX在擷取Mysql連接配接時,執行session指定的SQL語句,修改目前connection session屬性
必須: 否
預設值: 空
preSql
描述:寫入資料到目的表前,會先執行這裡的标準語句。如果 Sql 中有你需要操作到的表名稱,請使用 @table 表示,這樣在實際執行 Sql 語句時,會對變量按照實際表名稱進行替換。比如你的任務是要寫入到目的端的100個同構分表(表名稱為:datax_00,datax01, … datax_98,datax_99),并且你希望導入資料前,先對表中資料進行删除操作,那麼你可以這樣配置:“preSql”:[“delete from 表名”],效果是:在執行到每個表寫入資料前,會先執行對應的 delete from 對應表名稱
必選:否
預設值:無
postSql
描述:寫入資料到目的表後,會執行這裡的标準語句。(原理同 preSql )
必選:否
預設值:無
writeMode
描述:控制寫入資料到目标表采用 insert into 或者 replace into 或者 ON DUPLICATE KEY UPDATE 語句
必選:是
所有選項:insert/replace/update
預設值:insert
batchSize
描述:一次性批量送出的記錄數大小,該值可以極大減少DataX與Mysql的網絡互動次數,并提升整體吞吐量。但是該值設定過大可能會造成DataX運作程序OOM情況。
必選:否
預設值:1024
參考:
https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md
https://github.com/alibaba/DataX/blob/master/mysqlwriter/doc/mysqlwriter.md