天天看点

懒人改善生活之 - 数据入库实时转换

postgresql , etl , 数据转换 , 实时转换 , 规则 , 触发器

postgresql是一个功能很强大的数据库,仅仅在数据类型、索引接口的支持方面,就远超各种开源和商业数据库。

有些用户从其他数据源迁移到postgresql,或者有其他数据源来的数据,大多数是字符串、数字,到了postgresql可以转换为更精准的描述(数据类型),提升性能或功能。

例如

1、经纬度,在其他数据库中可能存成两个字段,分别表示经度和纬度。

postgresql支持geometry类型,支持点、线、面、栅格、top等gis类型。

2、数据范围,在其他数据库中可能存成两个字段,分别表示下限和上限。

postgresql通过range支持数值、时间、ip地址等数据类型的范围。

3、ip地址,在其他数据库中可能存为字符串。

postgresql支持network类型。

4、json,在其他数据库中可能存成字符串。

postgresql支持json类型。

5、图像特征值、线段、多边形、圆形、uuid、xml、数组等,在其他数据库中可能存成字符串。

postgresql支持以上类型。

6、全文检索,在其他数据库中可能需要借助搜索引擎支持。

postgresql支持全文检索类型。

7、枚举类型,在其他数据库中可能存成字符串。

postgresql支持枚举类型。

那么如何将数据从字符串平滑、实时的在入库阶段转换为postgresql支持的类型呢?

postgresql支持trigger和rule,使用任意方法,都可以做到数据的平滑转换。

数据来源是2个字段表示的经纬度,要求实时转换为geometry类型。

创建来源表结构

创建目标表结构

对来源表创建规则或触发器,例如

使用来源数据结构,将数据插入来源数据表

数据会自动写入目标表,来源表只是个转换入口,不会落数据

cool !!!使用这种方法,我们不需要先入库在转换,也不需要在入库前写程序进行转换。