Azure Synapse -是否有方法从ODBC源批量导入数据?

xwbd5t1u  于 2023-01-09  发布在  其他
关注(0)|答案(1)|浏览(132)

我们正在尝试通过SuiteAnalytics Connect(ODBC)将数据从Netsuite导入Azure Synapse Analytics-这适用于除一个表(transactionLine)之外的所有表,该表的连接总是在2小时后超时
从与甲骨文的谈话来看,两小时的限制是固定的,不能增加。
我在管道中设置了一个复制数据活动,当我将“使用查询”设置为“表”时,该活动超时,但当我将其设置为“查询”并将其限制为少量行(例如100)时,该活动工作正常(请参见屏幕截图)
是否有一种内置的方法可以批量导入此数据,比如说一次导入1000行,而无需创建几十个单独的Copy Data活动?

gj3fmq9x

gj3fmq9x1#

为了使您的管道在大量记录或创建批处理以导入数据时正常工作,您可以使用以下方法。

  • 如果有大量的记录,并且您希望将它们批量处理为1000行,则首先使用查找活动,然后获取所有记录的计数,并将其存储在设置变量中,其中包含以下动态表达式,或者如果您知道数量,则直接将其添加到设置变量活动中。
#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条记录时的调试输出。

相关问题