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

标签

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,使用任意方法,都可以做到数据的平滑转换。

rule 转换 例子

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

创建来源表结构

postgres=# create table nt(id int, c1 numeric, c2 numeric);
CREATE TABLE

创建目标表结构

postgres=# create table nt_geo (id int, geo geometry);
CREATE TABLE

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

postgres=# create rule r1 as on insert to nt do instead insert into nt_geo values (NEW.id, ST_MakePoint(NEW.c1,NEW.c2));
CREATE RULE

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

postgres=# insert into nt values (1,1,1);
INSERT 0 1

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

postgres=# select * from nt;
 id | c1 | c2
----+----+----
(0 rows)  

postgres=# select * from nt_geo ;
 id |                    geo
----+--------------------------------------------
  1 | 0101000000000000000000F03F000000000000F03F
(1 row)

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

时间: 2024-10-26 05:39:08

懒人改善生活之 - 数据入库实时转换的相关文章

php懒人函数 自动添加数据

复制代码 代码如下: /* *@自动添加数据函数 *@$table 表名 *@$arr 字段库 array("title",array("content",int)) *@ array(字段,类型) *@ 类型说明 html--允许html unhtml-不允许html int --int类型 float -- float 类型 */ //自动插入数据函数 function autoInsert($table,$arr=array(),$method='post')

php懒人函数 自动添加数据_php技巧

复制代码 代码如下: /* *@自动添加数据函数 *@$table 表名 *@$arr 字段库 array("title",array("content",int)) *@ array(字段,类型) *@ 类型说明 html--允许html unhtml-不允许html int --int类型 float -- float 类型 */ //自动插入数据函数 function autoInsert($table,$arr=array(),$method='post')

万物互联展示云端生活魅力 5G智能交通开启“懒人时代”

近日,2015年中国国际信息通信展览会开幕,吸引了十余个国家和地区的400余家知名企业参展. 移动互联像神奇的"迈达斯之手",将无数对未来美好生活的想象变成了现实.昨日,在京启幕的2015年中国国际信息通信展上,一秒钟识别真假身份证的NFC手机,24小时的移动柜台银行,以及让驾驶员拥有千里眼和顺风耳的5G智能交通,向人们展示了未来"云端"生活的魅力. NFC秒验个人身份信息 挂失身份证信用卡再难透支 市民卢先生的身份证于2011年被偷后,已办理挂失手续.今年6月,他

AA租车CEO王利峰:用数据和效率去定义每个人的生活

今日,在深圳福田区香格里拉大酒店举办的 "移动互联网城市交通新模式"发展论坛上,AA租车CEO王利峰先生作为论坛演讲嘉宾出席了本次会议,并与政府.学界专家共同探讨了行业如何良性发展的课题.据悉,本次论坛围绕城市交通出行的创新与智慧为出发点,探讨了移动互联时代背景下,政企合作如何推动行业发展.商务约租车与传统租车之间如何实现 "创新与继承.发展与稳定.多元化与合法性"的和谐性等问题.作为商务专车的优质代表,AA租车从起步之初,就坚持走纯B2C的O2O自营之路,无论是在

懒人必备神器 自动搅拌杯为生活增添趣味

很多朋友喜欢喝咖啡,但有时发现手头没有搅拌东西,心痒难耐怎么办?喝咖啡杯子是必须要有的,杯子是日常生活中必不可少的用品,其中不乏可爱的.有个性的.实用的,也许你现在用的还是最普通的,如果你能拥有一个有创意的杯子,把喝水都变成一件http://www.aliyun.com/zixun/aggregation/7239.html">有趣的事情,会为生活增添不少趣味. 今天为大家推荐可以自动搅拌的咖啡杯,价格实惠又实用,这不是简单的喝水工具,不管是咖啡,果珍.奶粉.麦片等一切需要搅拌的饮料,它都

必学生活小技巧!懒人 2 秒折衣法,100 件衣服居然不用 5 分钟~

class="post_content" itemprop="articleBody"> 小编是一个很懒的人,对于有些事就是很不想做,其中最讨厌就是折衣服这件事,所以当我发现这个<懒人2秒折衣法>心情真是超好的,所以马上分享给一些和小编一样懒到爆的童鞋们,准备好衣服我们一起来学习吧-- 懒人必学!2秒折衣法

懒人促进社会进步 - 5种索引的原理和优化Case (btree,hash,gin,gist,brin)

标签 PostgreSQL , 多列聚合 , gin , btree , n_distinct , 选择性 , 如何选择索引方法(hash,btree,gin,gist,brin) , 如何优化索引 , 相关性 背景 在广告行业,精准营销是一个较热的话题,之前写过一个案例,如何使用PostgreSQL的array类型和GIN索引实时圈人的场景. <万亿级营销(圈人)迈入毫秒时代 - 万亿user_tags级实时推荐系统数据库设计> 使用以上方法,程序需要作出一些调整(当然,如果用户原本就是Po

六大新兴创业创意:懒人经济学 Sageby排队赚钱

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;  Zaarly:在街头大喊"我要吃泡芙!" 崎岖模式 想一想互联网最初带给我们的实惠是什么?当然是海量的信息.没有网络时,你可能要苦寻一件物品或一项服务很久,甚至最终不得其门而入.但网络可以把海量的信息分类整理,供你检索,迅速帮你找到所需.但这样的模式问题在哪儿呢?信息大多是由卖家或服务提供者列出他们的商品或服务,"征求"买家

那些真正改善生活质量的科技家具

盘点那些真·改善生活质量的科技家具 现在是 2017年 随着科技的不断发展,以前的高科技家具可能是空调.冰箱.微波炉,而在居家生活中的痛点永远都数不完,这里就推荐一个真的改善居家生活质量,简单易用的新型家具不过不一定是智能家具.标准就是:实用性.易用性.集成性. 自动洗碗机 洗碗,绝对是生活痛点!尤其是冬天,特别是南方,不仅水冷而且洗洁精还会让本来就干燥的手开始皲裂,非常的不友好,而且开开心心的吃完饭,就要做不开心的洗碗特别的有反差感. 而且生活中碗筷仅仅是洗一下并不会让其残留的细菌病毒也走掉,