首页 > 解决方案 > SSIS:导入具有 JSON 格式数据的文本文件并加载到 SQL Server

问题描述

我需要在 SSIS 中创建一个导入包,以从具有 JSON 格式内容的文本文件中加载数据并加载到 SQL Server 数据库中。

以下是文本文件中的一个示例记录:

{
    "apeId": "677ac547367456defgea42beb9bebc",
    "apeName": "DISCOVERY STATION",
    "id": "e1a3af5af654178a0ff5ffc01fd014a7",
    "imageUrl": "http://172.16.6.9:8080/427/21e3698fd99ffb5c.jpg",
    "lat": "25.038544",
    "lng": "52.146149",
    "monitorTask": "Traffic",
    "resultTime": "2021-03-26 16:05:25",
    "sceneImgUrl": "http://172.16.6.9:8080/427/21e3d99ffb5c.jpg",
    "subType": "CAR",
    "subjectId": "H66621",
    "trackId": "329741647"
}

我只需要从中获取值并加载到 SQL 中,关键是我的表列名。理解它可以通过脚本任务来完成。请在代码示例上帮助我。

谢谢

标签: sql-serverssis

解决方案


使用像https://json2csharp.com/这样的工具来创建类并对其进行反序列化。

// Root[] myDeserializedClass = JsonConvert.DeserializeObject<Root[]>(myJsonResponse); 
    public class Root
    {
        public string apeId { get; set; }
        public string apeName { get; set; }
        public string id { get; set; }
        public string imageUrl { get; set; }
        public string lat { get; set; }
        public string lng { get; set; }
        public string monitorTask { get; set; }
        public string resultTime { get; set; }
        public string sceneImgUrl { get; set; }
        public string subType { get; set; }
        public string subjectId { get; set; }
        public string trackId { get; set; }
    }

这可能不是您的完整解决方案。粘贴整个 Json 文件,因为您可能会有一个类列表/数组。但在那之后就很简单了。

在这种情况下使用 foreach 循环。

foreach(var r in Root)
{
   //push to SSIS
}

推荐阅读