Я хочу прочитать некоторые данные из JSON API в SSIS и записать их в таблицу в SQL Server. Я решил эту задачу с помощью стороннего разработчика, но решение не так уж и элегантно, поэтому сейчас я пытаюсь выполнить его самостоятельно в Visual Studio, используя компонент сценариев SSIS.
Я искал в Интернете решения и закончил с этим результатом. Пока я достаточно уверен в том, что происходит, но у меня нет окончательного направления для этого. Я знаю, что мне нужно каким-то образом отобразить выходные данные в столбцы, которые я создал в SSIS.
Я думаю, что я должен что-то сделать около CreateNewOutputRows()
, но я не уверен, что. Может кто-нибудь помочь мне в этом? Кроме того, поскольку это более или менее мой первый в истории скрипт на c #, я также был бы признателен, если есть более простое решение ИЛИ если оно каким-то образом неуместно и т. Д.
Прежде всего, выход API выглядит следующим образом (документация по API здесь) :
"data":[
{
"created_at":"2016-03-12 09:45:00",
"created_at_unix":1457772300,
"shop_name":"DK - Some name",
"location_id":1111,
"custom_location_id":"2222",
"custom_shop_id":"2222",
"shop_id":3333,
"count_in":"1",
"count_out":"1",
"timekey":3
}
Сценарий, который у меня пока есть,
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.Linq;
using System.Net;
using System.Collections.Generic;
using Newtonsoft.Json;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
public static void Main()
{
//Test api
var url = "https://login.vemcount.com/api/fetch_data/?data={"api_key":"xxxxxxx","type":"company_id","id":"10","date_from":"2019-01-01 00:00","interval":"15min", "group_by":"shop_id"}";
var json = new WebClient().DownloadString(url);
var root = JsonConvert.DeserializeObject<RootObject>(json);
//Printing last record
Console.WriteLine(root.data.Last().created_at);
}
public class data
{
public string created_at { get; set; }
public int created_at_unix { get; set; }
public string shop_name { get; set; }
public int location_id { get; set; }
public string custom_location_id { get; set; }
public string custom_shop_id { get; set; }
public int shop_id { get; set; }
public string count_in { get; set; }
public string count_out { get; set; }
public int timekey { get; set; }
}
public class RootObject
{
public List<data> data { get; set; }
}
public override void CreateNewOutputRows()
{
}
}