ETL工具-nifi乾貨系列 第八講 處理器PutDatabaseRecord 寫數據庫(詳細)

1、本節通過一個小例子來講解下處理器PutDatabaseRecord,該處理器的作用是將數據寫入數據庫。

如下流程通過處理器GenerateFlowFile 生成數據,然後通過處理器JoltTransformJSON轉換結構,最後通過處理器PutDatabaseRecord將數據寫入數據庫。如下圖所示

 2、處理器GenerateFlowFile 生成自定義數據,如下圖所示

 3、處理器JoltTransformJSON轉換結構,將結構轉換成適合表字段的結構,此時有兩種方式駝峯和下劃線兩種方式。下圖採用駝峯方式

 4、處理器PutDatabaseRecord將數據寫入數據庫,此處理器需要配置兩個控制器,Record Reader和Database Connection Pooling Service 兩個控制器。

 Record Reader

指定用於解析傳入數據並確定數據模式的控制器服務。

Database Type

數據庫的類型/版本,用於生成特定於數據庫的代碼。在許多情況下,通用類型應該足夠,但某些數據庫(例如Oracle)需要自定義的SQL子句。這裏我們選擇mysql

Statement Type

支持常見的sql語句類型,如增刪改查,我們這裏選擇insert

Data Record Path

指定數據記錄的路徑,該路徑確定了要發送到目標數據庫的記錄。

Database Connection Pooling Service

配置數據庫連接池信息,如下圖所

 

 

 

 

Catalog Name

SQL語句應該更新的目錄名稱

Schema Name

database 名稱

Table Name

表名

Translate Field Names

如果設置爲 true,處理器將嘗試將字段名翻譯爲指定表格的相應列名。如果設置爲 false,字段名必須與列名完全匹配,否則列將不會被更新。

Unmatched Field Behavior

未匹配的字段行爲,自己根據要求進行選擇。未匹配的字段行爲,自己根據要求進行選擇策略。

Unmatched Field Behavior
 如果傳入記錄沒有數據庫表的所有列的字段映射,該屬性指定如何處理這種情況。
其他屬性如果感興趣的可以自行嘗試配置。

5、大功告成,查看錶my_user,數據已經寫入,這裏爲了演示方便,所以user_id 沒有設置唯一健。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章