首页 > 解决方案 > 使用条件将表从 SQL DB 复制到 Azure SQL DB?

问题描述

我想要

  1. 在水槽侧创建一个新表
  2. 删除列标题中的空格
  3. 将源列与接收器映射。
  4. 我不想复制接收器中的所有列。

(例如:如果我在接收器中有 10 列,那么我只想将其中的 8 个复制到接收器)

标签: azureazure-sql-databaseazure-data-factory

解决方案


你可以使用Azure 数据工厂数据流来完成此任务。

您必须在本地机器上安装自托管集成运行时。

创建一个新的链接服务,使用上面创建的 IR,提供您的本地 SQL 服务器和数据库名称,并且应该连接它

关注:https ://www.mssqltips.com/sqlservertip/5812/connect-to-onpremises-data-in-azure-data-factory-with-the-selfhosted-integration-runtime--part-1/

同样,您需要使用 ADF 中提供的默认集成运行时为 Azure SQL DB 创建链接服务。关注:https ://www.tallan.com/blog/2021/03/30/how-to-create-a-sql-database-linked-service-in-azure-data-factory/

创建两个链接服务后,您需要使用这些链接服务创建数据集。一个数据集将引用本地计算机上的源表,另一个将用作 Azure SQL 数据库中的接收器。

要在 ADF 中创建数据集,请按照作者(左侧的铅笔符号)-> 数据集 -> 新数据集。

现在主要的事情来了,ADF 数据流。

创建数据流:作者(左侧铅笔符号)-> 数据流-> 新数据流。

您的数据流将如下所示。在 Source Setting 中,您需要选择在上述步骤中创建的输入数据集,其中存储了输入数据。

在此处输入图像描述

您可以启用如上图所示的数据流调试,以检查每一步转换后的数据预览,如下图所示。我们将根据要求转换列 FirstName。

在此处输入图像描述

replace(FirstName, " ", "")在 DerivedColumn 中,我们将使用函数将空格替换为空值。

在此处输入图像描述

在 Alter Row 中,我们将根据某些条件删除行。这里我们删除 PersonID > 8 的行。

在此处输入图像描述

完成后,您可以在Sink Data Preview中看到生成的数据。

在此处输入图像描述

最后,只需创建一个新管道。在空白处拖动数据流活动。选择我们上面在设置中创建的数据流活动名称。单击添加触发器以立即触发。

在此处输入图像描述

管道完成后,您可以检查 Azure SQL DB 中的数据。


推荐阅读