如何使用 adf 数据流将特定记录从一个表复制到另一个表

问题描述 投票:0回答:1

我需要创建一个表,用于存储数据库中所有表名及其行数的记录。

我尝试创建一个数据流,在其中使用转换选择特定数据。并且能够为一个表生成输出。我计划将其集成到管道中,并使用每个活动来转换每个表,但我无法将这些记录附加到新表中

azure-data-factory google-cloud-dataflow
1个回答
0
投票

我需要创建一个表,用于存储数据库中所有表名及其行数的记录。

您可以使用复制活动来实现您的要求。在复制活动源查询中使用来自@Dan GuzmanMS Ask引用的以下查询来获取表名称和行数。

SELECT s.name AS SchemaName, t.name AS TableName, SUM(p.rows) AS TableRowCount FROM sys.schemas AS s JOIN sys.tables AS t ON t.schema_id = s.schema_id JOIN sys.partitions AS p ON p.object_id = t.object_id GROUP BY s.name, t.name ORDER BY SchemaName, TableName;

enter image description here

在复制活动接收器中提供目标表数据集并执行管道。所需的输出将如下所示。

enter image description here

在这里,我的目标表位于同一个数据库中,并且在管道运行之前没有行。

如果您的源数据库不是 SQL,并且您只想使用数据流来执行此操作,那么首先您需要从查询中获取表名称列表并在查找中使用它。将该查找输出提供给 ForEach。

采用此 ForEach 内的数据流活动,您需要将表名称作为参数传递给数据流。在数据流查询中使用此参数(如

"select '{$param1}' as name, count(*) as count from {product}"
),并在数据流接收器中提供目标表数据集。 这将在每次迭代中将表名称和行插入到目标表中。

© www.soinside.com 2019 - 2024. All rights reserved.