gpt4 book ai didi

azure - 使用 ADF,如何将文件名加载到 SQL Server 表中?

转载 作者:行者123 更新时间:2023-12-02 08:00:02 24 4
gpt4 key购买 nike

我正在尝试同时使用 GetMetadata 事件和 CopyData 事件。我的设置如下所示。

enter image description here

我正在尝试获取文件名(使用 GetMetadata)并将它们加载到 SQL Server 表中的字段中(与 CopyData 结合使用)。 CopyData 工作得很好,但我没有看到任何方法让 GetMetadata 获取文件名并将其传递到表中的字段中。在我的示例中,源数据中有 4 个字段与目标表中的 4 个字段匹配。第 5 个字段大概是文件名。显然,它实际上并不是这样工作的。我通读了下面的文档,但仍然无法弄清楚。

https://learn.microsoft.com/en-us/azure/data-factory/control-flow-get-metadata-activity

最佳答案

2020 年 7 月更新

复制事件最近添加了一项新功能,允许您添加列,$$FILEPATH 是当前唯一受支持的变量。请参阅此处了解更多详细信息:

https://learn.microsoft.com/en-us/azure/data-factory/copy-activity-overview#add-additional-columns-during-copy

<小时/>

原始答案

向数据集添加额外的列可能会被视为转换,而 Azure 数据工厂 v2 (ADF v2) 复制任务并不容易进行转换。它可以做一些事情,例如从一种格式(例如 csv)转换为其他格式(例如 JSON),但它是有限的。也许在将来的某个时候,他们会在映射中添加一些内容,允许添加字符串文字或类似于 SSIS 派生列功能的内容,但目前看来,这些类型的功能正在添加到映射数据流中。

然而,实现此目的的一种方法是使用带有文件名参数和主数据集表类型参数的存储过程目标。它看起来有点像这样: ADF Copy Task with Stored Proc target

缺点是您现在必须在数据库中创建一个支持表类型(CREATE TYPE)和一个存储过程来处理它,如下所示:

CREATE TYPE dbo.typ_multiFile AS TABLE (
col1 CHAR(1) NOT NULL,
col2 CHAR(1) NOT NULL,
col3 CHAR(1) NOT NULL
)
GO


CREATE OR ALTER PROC dbo.usp_ins_myTable (
@fileName AS VARCHAR (100),
@typ AS dbo.typ_multiFile READONLY
)
AS
SET NOCOUNT ON

INSERT INTO dbo.myTable ( [fileName], col1, col2, col3 )
SELECT @fileName, col1, col2, col3
FROM @typ

RETURN
GO

请注意,复制任务位于 ForEach 任务内,如下图所示:

ADF Logical Diagram

关于azure - 使用 ADF,如何将文件名加载到 SQL Server 表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58141391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com