簡體   English   中英

使用Spring Boot從Oracle到SQL Server的數據傳輸

[英]Oracle to SQL Server data transfer using spring boot

我正在尋找技術解決方案; 使用Java Spring Boot從一個數據庫查詢數據並將其加載到SQL Server數據庫中。

模擬查詢以獲取在20小時的給定時間內更新的productName:

SELECT 
    productName, updatedtime FROM
products WHERE
    updatedtime BETWEEN '2018-03-26 00:00:01' AND '2018-03-26 19:59:59';

這是我們遵循的方法。

1)它運行時間長的Oracle查詢,在工作時間大約運行1個小時,它返回約100萬條記錄。

2)我們必須使用JDBC將結果集插入/轉儲到SQL Server表中。

3)據我所知,Oracle JDBC驅動程序支持某種流。 當我們遍歷ResultSet時,它僅將fetchSize行加載到內存中。

int currentRow = 1;
while (rs.next()) {
  // get your data from current row from Oracle database and accumulate in a batch
  if (currentRow++ % BATCH_SIZE == 0) {
    //insert whole accumulated batch into SqlServer database
  }
}

在這種情況下,我們不需要將來自Oracle的所有巨大數據集存儲在內存中。 然后,將按批處理BATCH_SIZE插入SqlServer。 唯一的事情是,我們需要考慮在哪里提交到SqlServer數據庫。

4)這是從Oracle db獲取數據的查詢執行等待時間的瓶頸,因此我打算將查詢分為10個相等的部分,例如每個查詢,以給出每個小時之間的更新時間。 這樣每個查詢的執行時間也減少到了10分鍾左右。 例如:SELECT productName,updatedtime從'2018-03-26 01:00:01'和'2018-03-26 01:59:59'之間更新時間的產品中;

5.為此,我需要5個Oracle JDBC連接和5個Sql服務器連接(以查詢數據並將其插入db)以獨立完成其工作。 我是JDBC連接池的新手,如果不使用連接池,如何進行連接池和關閉連接?

請建議您是否還有其他更好的方法可以從數據源中快速獲取實時數據。 請提出建議。 提前致謝。

這是春季批處理中的典型用例。

在那里,您具有ItemReader(來自源數據庫)和ItemWriter(進入目標數據庫)的概念。

您可以定義多個數據源,並且將具有讀取固定讀取大小(例如,JdbcCursorItemReader)的功能以及創建用於並行執行的網格的功能。

通過快速搜索,您可以在線找到許多與此類任務相關的示例。

我知道我沒有發布與該概念相關的代碼,但是要花一些時間來准備一個不錯的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM