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

如何使用SSIS导入JSON格式文本文件数据并加载到SQL Server

SSIS 脚本组件实现JSON文本文件导入SQL Server操作指南

前置准备

  • 提前在SQL Server中创建目标表,列名与JSON键完全对应,数据类型按需配置:字符串类字段用nvarchar,经纬度用decimal,时间用datetime即可
  • 在SSIS包中添加「平面文件源」,配置为读取你的JSON文本文件,设置每行读取一条完整JSON,输出列命名为JsonContent
  • 新增「脚本组件」(类型选择「转换」),将平面文件源的输出连接到该组件
  • 打开脚本组件编辑器:
    1. 「输入列」页勾选JsonContent列
    2. 「输入和输出」页添加输出列,与JSON的键一一对应,配置匹配的数据类型
    3. 选择脚本语言为C#,点击「编辑脚本」进入代码编辑界面

核心代码示例

这里提供两种常用的JSON解析方案,按需选择即可:

方案1:使用内置System.Text.Json解析(无需额外部署第三方库)

在脚本代码中先添加命名空间引用:

using System.Text.Json;

找到Input0_ProcessInputRow方法,替换为以下内容:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    try
    {
        // 解析当前行的JSON字符串
        JsonElement jsonObj = JsonSerializer.Deserialize<JsonElement>(Row.JsonContent);
        
        // 逐字段赋值到输出列
        Row.apeId = jsonObj.GetProperty("apeId").GetString();
        Row.apeName = jsonObj.GetProperty("apeName").GetString();
        Row.id = jsonObj.GetProperty("id").GetString();
        Row.imageUrl = jsonObj.GetProperty("imageUrl").GetString();
        Row.lat = Convert.ToDecimal(jsonObj.GetProperty("lat").GetString());
        Row.lng = Convert.ToDecimal(jsonObj.GetProperty("lng").GetString());
        Row.monitorTask = jsonObj.GetProperty("monitorTask").GetString();
        Row.resultTime = Convert.ToDateTime(jsonObj.GetProperty("resultTime").GetString());
        Row.sceneImgUrl = jsonObj.GetProperty("sceneImgUrl").GetString();
        Row.subType = jsonObj.GetProperty("subType").GetString();
        Row.subjectId = jsonObj.GetProperty("subjectId").GetString();
        Row.trackId = jsonObj.GetProperty("trackId").GetString();
    }
    catch
    {
        // 解析错误的行重定向到错误输出,避免包整体失败
        Row.DirectRowToErrorOutput();
    }
}

如果存在字段可能缺失的场景,可以用TryGetProperty判断后再取值,避免抛出异常:

if (jsonObj.TryGetProperty("sceneImgUrl", out JsonElement sceneImgProp))
{
    Row.sceneImgUrl = sceneImgProp.GetString();
}
else
{
    Row.sceneImgUrl_IsNull = true;
}

方案2:使用Newtonsoft.Json解析

需要提前将Newtonsoft.Json.dll安装到服务器的GAC中,再添加引用到脚本项目,命名空间引用:

using Newtonsoft.Json.Linq;

核心解析逻辑:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    try
    {
        JObject jsonObj = JObject.Parse(Row.JsonContent);
        Row.apeId = jsonObj["apeId"].ToString();
        Row.apeName = jsonObj["apeName"].ToString();
        // 剩余字段赋值逻辑和上面一致,按需做类型转换即可
    }
    catch
    {
        Row.DirectRowToErrorOutput();
    }
}

后续配置

脚本编辑完成后保存关闭,添加「OLE DB目标」连接到脚本组件的输出,配置输出列和SQL目标表的字段映射,运行包即可完成数据导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:27:05