簡體   English   中英

Azure Synapse - 有沒有辦法從 ODBC 源批量導入數據?

[英]Azure Synapse - Is there a way to import data from an ODBC source in batches?

我們正在嘗試通過 SuiteAnalytics Connect (ODBC) 將數據從 Netsuite 導入到 Azure Synapse Analytics - 這適用於除一個表 (transactionLine) 之外的所有表,其中連接總是在 2 小時超時

從與 Oracle 的對話來看,兩小時的限制似乎是固定的,無法增加。

我在管道中設置了一個復制數據活動,當我將“使用查詢”設置為“表”時它超時但是當我將它設置為“查詢”並將其限制為少量行(例如 100)時它有效很好(見截圖)

是否有一種內置方法可以批量導入此數據,比如一次導入 1000 行,而無需創建數十個單獨的復制數據活動?

復制數據限制為 100 行

為了讓您的管道在沒有大量記錄時工作或創建批次來導入數據,您可以使用以下方法。

  • 如果沒有大量記錄並且您想將它們批量處理為 1000 行,首先使用查找活動並獲取所有記錄的計數並將其存儲在具有以下動態表達式的 set 變量中,或者如果您知道您的數量並直接添加它在設置變量活動中。
#to get ftom lookup
@string(activity('Lookup1').output.count)

#to add manually
@string(5000)

在此處輸入圖像描述

  • 我使用了另一個變量來將處理的記錄的開始設置為start
@string(1)

在此處輸入圖像描述

  • 我使用了另一個變量來設置處理為end的記錄的結尾。
@string(1000)

在此處輸入圖像描述

  • 現在使用until活動進行處理,直到end值大於left
@greater(variables('end'),variables('left'))

在此處輸入圖像描述

  • 現在,使用execute pipeline活動並將變量值傳遞給該管道參數,借助此參數,您可以查詢數據並批量導入。

在此處輸入圖像描述

  • 現在我們必須更新startend的值,我們增加start的值並增加end的值。
  • 由於我們不能自引用變量,所以我們必須獲取一個臨時引用變量,然后更新它。
  • 為了更新start的值,我將以下值作為changestart變量。
@string(add(int(variables('start')),1000))

在此處輸入圖像描述

  • 將上面的changestart值分配給start變量。

在此處輸入圖像描述

  • end也同樣遵循。 下面是5000條記錄時的debug output。

在此處輸入圖像描述

暫無
暫無

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

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