2015-03-02 111 views
0

在我的情況下,我必須從一個表格加載大量數據到另一個表格。 (Tera到sqlserver)。使用JdbcCursorItemReader,平均需要30分鐘來加載200000條記錄,因爲該表有40列。所以我打算使用分區技術。組合主鍵表的Columnpartitioner?

以下是在挑戰

  1. 該表具有一個複合主鍵(2列)。
  2. 而其中一個列值爲負值。
  3. 在這種情況下,這可能做columnpartition技術嗎?
  4. 我看到columnpartition技術使用一個主鍵並查找最大值和最小值。在我的情況下,與複合材料主,即使我認爲最大,最小,網格大小。框架支持處理分區的複合主鍵?

回答

0

一對夫婦的事情,這裏要注意:

  1. JdbcCursorItemReader所以它通常劃分的情況,不使用不是線程安全的。而是使用JdbcPagingItemReader
  2. 您對數據進行分區的邏輯完全取決於您。雖然通過列中的值來實現它是有用的,但它並不適用於所有用例(像這樣)。在這個特定的用例中,您可能想要按ROW_NUMBER()或類似的東西進行分區,或者添加一列到分區。
+0

感謝邁克爾的迴應。我無法使用pagingItemReader方法,因爲它引發'org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean#143a680':FactoryBean在創建對象時拋出異常;嵌套異常是java.lang.IllegalArgumentException:找不到產品名稱的數據庫類型:[Teradata]。 Teradata沒有支持bean - SqlPagingQueryProviderFactoryBean。 – Dhamo 2015-03-04 00:59:30

+0

我試圖給一個sqlserver數據源作爲SqlPagingQueryProviderFactoryBean的屬性。和jdbcpageItemReader的teradata源代碼。它開始工作,但不知道它是否應該很好用。請告訴我。 – Dhamo 2015-03-04 01:03:25