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

如何通过Azure Data Factory将本地SFTP文件夹数据导入Azure SQL数据库

基于Azure Data Factory的SFTP CSV到Azure SQL全流程实现方案

1. 前置依赖准备

  • 配置ADF的SFTP链接服务:确保ADF可访问指定SFTP服务器,配置时填好主机地址、端口、认证方式(密码/SSH密钥)
  • 配置Azure Blob存储链接服务:用于暂存SFTP拉取的原始文件,建议开启冷存储降低成本
  • 配置Azure SQL链接服务:授予ADF对应表的INSERT/ALTER权限(校验环节可能需要临时表操作权限)
  • 提前在Azure SQL中创建好和CSV一一对应的目标表,确保列名、数据类型和CSV字段匹配

2. 核心流水线设计

整个流程用一条触发器驱动的流水线实现,触发器按需求设置为每日/每周定时触发:

2.1 第一步:批量拉取SFTP文件到Blob暂存

用Copy活动实现:

  • 源数据集选SFTP的指定文件夹路径,设置通配符*.csv匹配所有CSV文件,需要遍历子文件夹时开启「递归遍历」即可
  • 接收器选Blob存储的临时容器,建议保留原始文件名,按上传日期分区存储(比如路径格式为raw/sftp_data/yyyyMMdd/),方便后续溯源
  • 该步可开启二进制复制,不对文件做解析,保证原始文件完整拉取

2.2 第二步:单文件校验+写入

拉取完成后用Get Metadata活动获取Blob暂存路径下的所有CSV文件列表,接着接For Each活动遍历每一个文件:
For Each内部的执行逻辑为:

  1. 校验环节:根据业务规则选择校验方式:
    • 基础校验:用Lookup活动读取CSV文件,校验列数是否匹配目标表、是否有缺失必填字段、数据格式是否合法(比如日期字段格式是否符合要求)
    • 自定义校验:如果有复杂业务规则,可调用Azure Function活动或者存储过程活动,传入文件路径后执行自定义校验逻辑,校验不通过的文件移动到Blob的错误目录,触发告警通知
  2. 写入Azure SQL环节:校验通过的文件用Copy活动写入对应Azure SQL表:
    • 源数据集选当前遍历的CSV文件,设置好分隔符、编码格式、是否包含表头
    • 接收器选对应Azure SQL表,写入模式选追加或者upsert根据业务需求决定,列映射会自动匹配同名的CSV字段和表字段,不一致的手动调整即可
    • 大文件可开启批量插入、分块复制提升写入性能,避免超时
  3. 归档环节:写入完成后,将处理成功的CSV文件移动到Blob的归档目录,可按需求定期清理或者长期留存

3. 可选优化项

  • 针对大文件可开启ADF的容错功能,跳过错误行,错误行输出到单独的日志文件方便排查
  • 配置流水线告警,任务失败或者校验不通过时自动发通知
  • 如果CSV和表的对应关系是动态的,可以提前在Azure SQL中建一张映射关系表,For Each活动中先查询映射关系匹配对应的目标表,不需要为每个文件单独建活动
  • 不需要额外引入SSIS流水线,原生ADF活动已经可以覆盖全流程需求,运维成本更低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:01