如何以最简方式将Pipeline/LinkedService/Dataset JSON文件上传至Data Factory?
最简方法:用Azure CLI批量上传ADF资源
嘿,别再手动复制粘贴JSON了!用Azure CLI是最省事的办法,几步就能把你的Pipeline、LinkedService、Dataset批量传到Data Factory里,完全不用手动创建新版本。
准备工作
首先得确保你已经安装了Azure CLI,并且登录到了对应的Azure订阅:
az login # 切换到你的目标订阅(如果有多个的话) az account set --subscription <你的订阅ID或名称>
单个资源上传命令
针对不同类型的资源,用对应的CLI命令就行,直接指定本地JSON文件路径:
- LinkedService:
az datafactory linked-service create --resource-group <你的资源组名> --factory-name <你的ADF工厂名> --name <LinkedService名称> --file <本地JSON文件的绝对/相对路径> - Dataset:
az datafactory dataset create --resource-group <你的资源组名> --factory-name <你的ADF工厂名> --name <Dataset名称> --file <本地JSON文件的绝对/相对路径> - Pipeline:
az datafactory pipeline create --resource-group <你的资源组名> --factory-name <你的ADF工厂名> --name <Pipeline名称> --file <本地JSON文件的绝对/相对路径>
批量上传更高效
如果你的JSON文件是按类型分文件夹放的(比如linked-services/、datasets/、pipelines/),写个简单的脚本就能一键批量上传,省得逐个敲命令。
举个Bash脚本的例子(Windows也可以用Git Bash或者WSL运行):
# 先替换成你自己的资源组和ADF工厂名 RESOURCE_GROUP="my-adf-resource-group" FACTORY_NAME="my-data-factory" # 批量上传LinkedService for file in ./linked-services/*.json; do # 从文件名提取资源名称(假设文件名就是资源的名称) SERVICE_NAME=$(basename "$file" .json) echo "正在上传LinkedService: $SERVICE_NAME" az datafactory linked-service create --resource-group $RESOURCE_GROUP --factory-name $FACTORY_NAME --name $SERVICE_NAME --file "$file" done # 批量上传Dataset for file in ./datasets/*.json; do DATASET_NAME=$(basename "$file" .json) echo "正在上传Dataset: $DATASET_NAME" az datafactory dataset create --resource-group $RESOURCE_GROUP --factory-name $FACTORY_NAME --name $DATASET_NAME --file "$file" done # 批量上传Pipeline for file in ./pipelines/*.json; do PIPELINE_NAME=$(basename "$file" .json) echo "正在上传Pipeline: $PIPELINE_NAME" az datafactory pipeline create --resource-group $RESOURCE_GROUP --factory-name $FACTORY_NAME --name $PIPELINE_NAME --file "$file" done
几个注意点
- 你的JSON文件得是符合ADF官方Schema的格式(比如从ADF导出的JSON就完全没问题),不然上传会报错。
- 如果目标资源已经存在,
create命令会直接覆盖更新,相当于替换现有版本,不用手动删除旧资源。 - 运行命令前确认CLI当前的订阅是你ADF所在的订阅,避免传错地方。
内容的提问来源于stack exchange,提问作者Jacob Alley
相关产品推荐
相关产品推荐

