You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure Data Factory将SQL nvarchar存储的文件迁移至Azure Blob并更新URL

Azure Data Factory实现SQL文件迁移到Blob并更新URL步骤

1. 配置数据源与数据集

  • 连接SQL Server数据源:创建指向目标SQL数据库的链接服务,再创建对应数据集,选中包含nvarchar类型文件内容和唯一标识(如ID)的表。
  • 连接Azure Blob Storage数据源:创建指向目标存储账户的链接服务,创建数据集时指定存储文件的容器,提前规划好文件命名规则(比如用ID当文件名,避免重复)。

2. 用数据流批量迁移文件

  • 新建映射数据流,源选择SQL数据集,读取带文件内容和ID的行数据。
  • 添加派生列转换:生成Blob的文件路径,比如写concat('docs/', toString(ID), '.pdf')(根据实际文件类型修改后缀),同时保留ID和原文件内容字段。
  • 若nvarchar存储的是Base64编码内容,先添加派生列用base64Decode(file_content)解码成二进制,再往下处理。
  • 添加接收器转换:选择Blob数据集,写入模式设为「逐行写入」,把文件内容字段映射到Blob内容,文件路径用刚才派生的列。

3. 生成Blob URL并更新SQL表

方案一:数据流+SQL接收器(批量高效)

  • 在Blob接收器之后,再添加派生列转换,构造完整Blob URL:concat('https://<你的存储账户名>.blob.core.windows.net/<容器名>/', 刚才的文件路径列)。
  • 添加第二个接收器:选择SQL数据集,写入模式设为「Upsert」,用ID作为匹配键,把派生的Blob URL字段映射到SQL表的对应更新字段(比如BlobUrl)。

方案二:管道活动+存储过程(适合单条处理)

  • 先在SQL库创建存储过程,用来接收ID和URL更新数据:
CREATE PROCEDURE UpdateRecordBlobUrl
    @RecordId INT,
    @NewBlobUrl NVARCHAR(500)
AS
BEGIN
    UPDATE YourTableName
    SET BlobUrl = @NewBlobUrl
    WHERE Id = @RecordId
END
  • 在Data Factory管道里,添加Lookup活动读取待处理的SQL行数据。
  • 添加ForEach活动遍历Lookup结果,内部依次执行:
    • Copy活动:把当前行的文件内容写入Blob,文件名用ID命名。
    • 直接构造Blob URL(格式:https://<存储账户>.blob.core.windows.net/<容器>/<文件名>),无需调用API。
    • Stored Procedure活动:调用上面的存储过程,传入ID和构造好的URL。

4. 测试与调度

  • 先单跑管道,检查Blob里是否生成文件,SQL表对应行的URL是否正确更新。
  • 按需设置定时触发器,自动处理新增的待迁移记录。

内容的提问来源于stack exchange,提问作者user656822

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:26:00