Skip to main content

数据写入方式

关系型数据库

以MySQL数据库为例

insert into:当主键/唯一性索引冲突时会写不进去冲突的行,以脏数据的形式体现,脏数据的配置与管理请参考 [脏数据管理]

replace into:没有遇到主键/唯一性索引冲突时,与insert into行为一致,冲突时,先delete再insert,未映射的字段会被映射为NULL;(仅MySQL支持选到replace into)

on duplicate key update:当主键/约束冲突,update数据,未映射的字段值不变;

Hive类数据库

以Hive为例,存在两种写入模式

insert overwrite:写入前将清理已存在的数据文件,之后执行写入(默认值);

insert into:写入前已有的数据不会删除,系统会写入的新的文件;

半结构化存储

以FTP为例,存在四种写入模式

append:按文件名称覆盖写入;

overwrite:先清空目录下的文件然后写入;

nonconflict:按文件名称查找,存在同名文件则报错,不存在同名文件则可正常写入;

insert:文件追加写入,存在同名时通过添加后缀的方式修改新文件的文件名称;

分析型数据库

以Impala数据源为例,存在三种写入模式

Insert:写入

update:更新

upsert:若主键在表中已经存在,则执行update语义,反之,执行insert。

NOSQL

以HBase为例,读取为null值时的处理方式:

  • skip:表示不向hbase写这列;
  • empty:写入HConstants.EMPTY_BYTE_ARRAY,即new byte [0]