2013-05-08 47 views
1

我有一個用例,在需要從文件中讀取行時,使用引擎轉換它們,然後將輸出寫入數據庫(可以配置)。 雖然我可以編寫我自己的查詢生成器,但我很想知道是否已經有可用的解決方案(庫)。插入查詢生成器爲java

我在網上搜索,可以找到jOOQ庫,但它看起來像是類型安全的,並有一個代碼生成工具,因此可能適合靜態數據庫模式。在我有db的用例可以動態配置並且元數據被編程讀取並且可用於寫入目的(所以可以使用表的列表,用戶可以選擇要寫入的列和插入腳本這些列需要動態創建)。

是否有任何庫可以幫助我的用例?

回答

0

你需要做的setps是:

  1. 讀取行

  2. 構建每一行成一個對象

  3. 變換上述目的,以目標對象

  4. 將目標對象插入分區中

在上述4個步驟,你需要做的唯一事情是第3步

併爲上述目的,你可以使用TransmorphEZMorphCommons-BeanUtilsDozer

2

如果我正確理解您需要查詢數據庫結構,通過GUI顯示結果並讓用戶將數據從文件映射到該結構?

假設是這種情況,您並不是在尋找一個「庫」,而是在尋找一個ETL工具。

或者,如果你對自己寫的東西設置,要做到這一點(非常)基本方法是:

  • 數據庫的結構使用Connection.getMetaData()。確切的用法可能因驅動程序而異,所以您需要創建一個滿足您需求的抽象層 - 我假設您只是對這裏的表結構感興趣。
  • 該文件的格式需要映射到與表格類似的結構。
  • 提供了一個GUI,允許用戶將文件中的元素連接到表中的列,包括所需的任何類型映射。
  • 根據文件元素到列的映射創建一個參數化插入語句 - 這只是字符串連接的一個簡單位。
  • 循環將文件中的行投擲到文件中,爲每個文件執行批量插入。

我的建議,得到了ETL工具,這聽起來像一個簡單的問題,但它充滿特質的 - 讓即使是80%的解決方案將是艱難和費時。

+0

我只想知道是否有一個容易可用庫來「創建一個參數化插入語句」,以便我不寫入無聊字符串連接位;順便說一句,你是對的這是一種ETL工具 – Scorpion 2013-05-08 08:51:43

1

jOOQ(你在你的問題中引用的庫)可以在不生成代碼被用作jOOQ手冊中註明:

當通過user group搜索,你會發現其他用戶以你打算的方式利用jOOQ

+0

+ 1,我會看看鏈接,我看不到一個插入的工作示例,並認爲它可能已被省略 - 看起來像我需要探索(我希望比寫我自己的東西花費的時間更少;-)) – Scorpion 2013-05-08 12:24:40

+0

@Scorpion:好點。我將很快在手冊中添加更多「純SQL」示例:[#2444](https://github.com/jOOQ/jOOQ/issues/2444) – 2013-05-08 17:21:14