数据写入方式
关系型数据库
以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]