Generic JDBC 連接器
Generic JDBC Connector 是一種通用的 Java 資料庫連接器,可用於在 Java 應用程式中連接和訪問各種類型的關聯式資料庫,例如 MySQL、PostgreSQL、Oracle 等等。它允許應用程式透過 Java Database Connectivity (JDBC) API 連接到資料庫,並執行 SQL 查詢和命令。
使用需求條件
使用 Generic JDBC 連接器前,需要先準備
- 欲連接資料庫的 JDBC Driver。
此文章以連接 PostgreSQL 為範例,可以至 PostgreSQL 官網下載 所需使用的 Driver 。
Step 1: 建立 JDBC Driver
點擊設定 Icon
,並選取 Drives
選項。
進入 Drivers
頁面後,點擊 Create a JDBC Driver
按鈕。
填入以下配置資訊。
Name
: Driver 顯示名稱Class Name
: Driver 的 class 名稱。例如Postgres
是用org.postgresql.Driver
Upload JAR File
: 上傳 Driver 的 jar 檔案Limit Pushdown
: 設定是否開啟 Limit Pushdown,將處理的查詢推送到資料來源端Limit Pushdown Clause
: (若開啟 Limit Pushdown),根據不同資料庫類型,選擇使用的 Limit Pushdown 語法Ignore System Schema Pattern
: 為避免系統資料表過多造成連線逾時,可以使用 regular expression 來忽略系統資料表
建立成功後,會看到建立的 Driver 顯示在頁面列表中。
Step 2: 建立 Generic JDBC 資料來源
您可以透過以下兩種操作來建立資料來源,第一種為點擊側欄 Data Source 的 “+” 按鈕,或是點擊 Overview 頁面中的 Create a Data Source 按鈕來建立。
Step 3: 設定連線資訊
Basic
- Name:資料庫於 Canner Enterprise 之顯示名稱,後續可作修改。
- Data Source Type : 資料庫類型,請選擇
Generic JDBC
。
Data Source Properties
URI:請填入資料庫 IP 位置,填寫格式為
jdbc:<protocal>://<host>:<port>/databaseName
。Username:請輸入連接此資料庫的使用者名稱。
Password:請輸入連接此資料庫的密碼。
Case Sensitive:Canner Enterprise 資料來源中所連結之資料表(Table)名稱皆會統一格式為小寫顯示,不支援以大小寫區分。請在此選擇當連結時偵測到有多個資料表(Table)的名稱字元相同僅有大小寫差異時,該以何種方式處理。
One Only
(預設選項)
:系統不支援多個資料表名稱字元相同但大小寫不同之狀況,因此送出連結資訊後系統會顯示連線錯誤。First Result
:系統會保留第一個掃描到的資料表,其餘相同名稱的資料表不會連至系統中。Lowercase First
:系統會保留第一個掃描到名稱為全小寫之資料表,其餘相同名稱的資料表不會連至系統中 (若沒有名稱為全小寫,則會保留第一個掃描到的資料表)。Uppercase First
:系統會保留第一個掃描到名稱為全大寫之資料表,其餘相同名稱的資料表不會連至系統中 (若沒有名稱為全大寫,則會保留第一個掃描到的資料表)。
範例:若您連結的資料庫中同時有名稱為 Table, table, TABLE 的三張資料表
1. 選擇 One Only - 送出連線後,系統顯示連線失敗。
2. 選擇 First Result - 保留連結 Table 資料表。
3. 選擇 Lowercase First - 保留連結 table 資料表。
4. 選擇 Uppercase First - 保留連結 TABLE 資料表。Unsupported Type Handling:選擇如何處理不支援的欄位型態。
Ignore
(預設選項)
:忽略,系統中會顯示此欄位的資料型態不支援。Convert To Varchar
:將不支援的欄位型態轉為字串(Varchar)型態。
Table Pattern:可以透過填入 Java 正則表達式 (Java Regular Expression) 來指定僅連結部分符合規則的資料表(Table)。遇以下三種情境時,建議您可以設定此項目:
- 希望只連結特定規則的資料表至 Canner Enterprise 中。
- 針對同一個原始來源資料庫,您希望在 Canner Enterprise 中分為多個資料來源來連結管理。
- 您連結的資料庫中資料表數量超過系統限制,因此需要拆分為多個資料來源來連結管理。
以下提供三個 Table Pattern 填寫範例:
範例1:填入 ^p.*\..* ,系統會篩選並只連結以 p 開頭的 schema 底下所有資料表。
範例2:填入 public\..* ,系統會篩選並只連結以 public 開頭的 schema 底下所有資料表。
範例3:填入 (public\..*)|(testing\..*) ,系統會篩選並連結以 public 或 testing 開頭的 schema 底下所有資料表。
Canner Enterprise 資料來源中所連結之資料表名稱皆會統一格式為小寫顯示,不支援以大小寫區分,因此Table Pattern 亦只支援小寫條件,若您填寫的 Java 正則表達式含有大寫字元,系統會自動轉為小寫條件判斷。
Number rounding mode:若您在執行 SQL Query 時使用到此資料來源所連結的資料表,其中有數值欄位資料的小數點位數超過
Default Scale
時,選擇系統該以何種方式處理 (此資料庫Default Scale = 0
,因此此設定項為選擇若數值欄位中若出現小數點如何取整)。Unnecessary
(預設選項)
: 系統會顯示 Query 失敗並提供錯誤訊息。Up
: 「遠離零的四捨五入」,將小數點進位到離零更遠的整數。Down
: 「靠近零的四捨五入」,將小數點捨去到離零更近的整數。Ceiling
: 「四捨五入向正無窮大方向」。Floor
: 「四捨五入向正無窮大方向」。Half Up
: 四捨五入至「最近的鄰近值」,除非兩個鄰近值都等距離,此時則向上進位。Half Down
: 四捨五入至「最近的鄰近值」,除非兩個鄰近值都等距離,此時則向下捨去。Half Even
: 四捨五入至「最近的鄰近值」,除非兩個鄰近值都等距離,此時則向偶數的鄰近值進位。
以下提供進位處理範例:
Input Number | UP | DOWN | CEILING | FLOOR | HALF_UP | HALF_DOWN | HALF_EVEN | UNNECESSARY |
---|---|---|---|---|---|---|---|---|
5.5 | 6 | 5 | 6 | 5 | 6 | 5 | 6 | throw ArithmeticException |
2.5 | 3 | 2 | 3 | 2 | 3 | 2 | 2 | throw ArithmeticException |
1.6 | 2 | 1 | 2 | 1 | 2 | 2 | 2 | throw ArithmeticException |
1.1 | 2 | 1 | 2 | 1 | 1 | 1 | 1 | throw ArithmeticException |
1.0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
-1.0 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
-1.1 | -2 | -1 | -1 | -2 | -1 | -1 | -1 | throw ArithmeticException |
-1.6 | -2 | -1 | -1 | -2 | -2 | -2 | -2 | throw ArithmeticException |
-2.5 | -3 | -2 | -2 | -3 | -3 | -2 | -2 | throw ArithmeticException |
-5.5 | -6 | -5 | -5 | -6 | -6 | -5 | -6 | throw ArithmeticException |
- Default Scale:數值欄位中資料小數點處理到第幾位數,此資料庫預設為 0,即為取至整數。
- Explore Timeout:系統連結資料來源的逾時限制,若系統執行連結超過此時間,會自動終止並顯示連線錯誤。系統預設逾時限制為
60000 毫秒
,若您要連結的資料庫中資料表(Table) 數量較多,建議可調高此逾時限制。
Step 4: 完成建立
進行 Submit 後,稍後片刻將會在側欄中顯示 Oracle 的資料來源,點擊後可以進入此資料來源細節頁面。