天天看點

懶人改善生活之 - 資料入庫實時轉換

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 !!!使用這種方法,我們不需要先入庫在轉換,也不需要在入庫前寫程式進行轉換。