2010-11-09 54 views
2

我正在構建一個應用程序,需要一些建議。我有一個獨特的問題,需要收集安裝在MS SQL Server中的數據,並將其每15分鐘移植一次到mySQL服務器。我已經在C#中使用DataGrid完成了此操作,但現在我試圖構建一個可以在Ubuntu服務器上運行的Java版本,但是我找不到類似的Java模型。Java MS SQL - > mySQL轉換

只給一點背景

當我從MS SQL Server中提取數據,它總是有9列,但也有從0任何地方 - 1000行。

在盲目地插入mySQL服務器之前,我會操縱一些數據。

  • 我轉換基礎上的狀態欄
  • 時間列於CST我剝一些字符,以防止SQL注入

我使用ResultSet試過,但我有「向前問題只有結果集「規則。

什麼是最好的數據結構來保存這些信息,操縱它,然後解析它以便將來插入到MySQL中?

+0

這是一個典型的SQL Server SSIS任務。 – robbbert 2010-11-09 18:23:40

+1

爲什麼要從MS SQL數據庫中獲取數據中的字符?如果你從數據庫中得到它們,那麼應該在第一次保存之前完成。 – 2010-11-09 18:47:34

回答

2

這聽起來像是PreparedStatements的工作!

定義如下:http://download.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

簡單的例子:http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html

的PreparedStatement允許你批量最多的數據集將它們推到目標數據庫之前。他們還允許您使用PreparedStatement.setString方法爲您處理轉義字符。

對於時間轉換的事情,我會從行中檢索STATE值,然後檢索時間值。在調用PreparedStatement.setDate之前,根據需要將時間轉換爲CST。

我不認爲你會需要ORM工具需要的所有開銷。

+0

同意,我的ORM是一個相當重量級的選擇,但我曾經使用過它,當時我知道我將在數據庫廠商之間進行一次性交換。 +1 :-) – 2010-11-09 21:40:51

1

你可以考慮使用像Hibernate這樣的ORM技術。這看起來可能有點重量級,但這意味着您可以輕鬆維護各種數據庫的各種表映射,並且可以爲任何操作需求提供Java RegEx庫的強大功能。

因此,您需要一個表示源表(使用其Hibernate映射)的Java類和另一個表示目標表的Java類,最後是一個轉換實用程序類,它可以對該數據進行任何操作。 Hibernate會爲你處理CRUD SQL,所以不用擔心數據庫特定的SQL(只要你得到正確的映射)。

它也減少了SQL注入問題

+0

讓我知道如果你想要更具體的細節 – 2010-11-09 18:13:52