当前位置: 首页 > 应用 > datax >

dataX之writeModel

本文中的writeModel主要是Mysql、Oracle等传统关系数据库中的writeMode。dataX导入到hive是直接写文件,不会支持这些writeModel。

 

预备知识

Mysql中的ON DUPLICATE KEY UPDATE

使用 ON DUPLICATE KEY UPDATE语句的时候,如果你插入的记录导致主键或唯一索引重复,那么Mysql就会认为该条记录存在,则执行update语句而不是insert语句;反之则执行insert语句而不是更新语句。

新建表user,id作为user的主键,并插入一条id = 1的数据

 

CREATE TABLE `user` (

 

  `id` int(12) NOT NULL ,

  `username` varchar(32) DEFAULT NULL,

  `password` varchar(32) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB;

INSERT INTO user VALUES (1,'GJMZ1','123456');

 

 

执行以下语句之后user表中然后只有一条语句,只是将password改为'1234567',这就是ON DUPLICATE KEY UPDATE的功能。

 

INSERT INTO user VALUES (1,'GJMZ1','1234567')ON DUPLICATE KEY UPDATE username = 'GJMZ1',password='1234567';

 

如果去掉表中的主键,执行上面两条sql之后,表中会有两行数据,因为执行ON DUPLICATE KEY UPDATE语句时,mysql是通过主键或者唯一索引来判断两条数据是否重复。

 

writeModel的用法

 

writeModel控制写入数据到目标表采用 insert into 或者 replace into 或者 ON DUPLICATE KEY UPDATE 语句。

insert:将数据源表的数据直接写的到目的表,主要用于全量的导入。实现原理是直接采用insert into;

replace和update:如果目标表中包含待写入的数据则更新该行数据,主要用于增量导入。实现原理:在mysql中用ON DUPLICATE KEY UPDATE语句,其他数据库中用replace into.

该文转自 简书:https://www.jianshu.com/p/d25a9a71d285

------分隔线----------------------------
  • 收藏
  • 挑错
  • 推荐
  • 打印