azure 多个查询作为源然后插入Excel文件但在不同的工作表中

jhiyze9q  于 2023-05-18  发布在  其他
关注(0)|答案(2)|浏览(147)

我有这样的情况下,我们有不同的查询,我们要在SQL Server中运行,然后将其保存在Excel文件。我参数化了Excel数据集,然后在“工作表名称”属性中分配了它,但我注意到当使用复制数据活动时,Sink属性不显示任何Excel数据集,只有CSV数据集。
我一直在寻找这方面的工作,但我只看到网络中的部分,读取Excel文件与多个工作表,然后迭代那些与For Each。但我需要的是反过来。我想写进一个单一的Excel文件中的不同结果,我的3个查询在每个不同的工作表使用ADF。
示例:

FileName: Results.xlsx

SELECT * FROM Table1

在名为Result1的工作表中插入Results.xlsv

SELECT * FROM Table2

在名为Result2的工作表中插入Results.xlsv

SELECT * FROM Table3

在名为Result3的图纸中插入Results.xlsv

jqjz2hbq

jqjz2hbq1#

不幸的是,ADF不支持Excel文件作为一个接收器,直到现在。对于上述用例,您必须在Azure函数、数据库或Azure批处理等中编写自己的自定义逻辑。

djmepvbi

djmepvbi2#

正如南丹所指出的,Excel目前不支持作为ADF中的接收器。我看到你已经添加到sql server标签,所以我假设你使用的是本地服务器,如果是这样的话,你可以使用一个简单的powershell脚本。我分享了一个相当有效的PowerShell脚本。

#Install-Module -Name ImportExcel

$WSName =  @("result1","result2")
$Queries =  @("SELECT GETDATE() AS TimeOfQuery","SELECT GETDATE() AS TimeOfQuery")
foreach ($ws in $WSName)
{
$QueryOp= Invoke-Sqlcmd -Query $Queries[$WSName.IndexOf($ws)] -ServerInstance "Your ServerName"
$QueryOp.TimeOfQuery|Export-Excel "C:\temp\Queryresult.xlsx" -Append -WorksheetName $ws
}

相关问题