Friday 15 June 2018

Download JSON file from Azure Storage and Read it by SSIS – Part 2

Introduction

This article is the continuation of my previous article named “Download JSON file from Azure Storage and Read it by SSIS”.
In this article we are going to read the JSON file and store it in Relational Database Table object. For that we are using Script Component. Hope it will be interesting.

JSON File

The sample of the example JSON file




Data Flow Task






Script Component Settings
Connection Manager with JSON File
Input Output Columns

Edit Script
References needed Syste.Web.Entry

Name Spaces needed:
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.Web.Script.Serialization;

C# Code:
#region Help:  Introduction to the Script Component
/* The Script Component allows you to perform virtually any operation that can be accomplished in
 * a .Net application within the context of an Integration Services data flow.
 *
 * Expand the other regions which have "Help" prefixes for examples of specific ways to use
 * Integration Services features within this script component. */
#endregion

#region Namespaces
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.Web.Script.Serialization;
#endregion

/// <summary>
/// This is the class to which to add your code.  Do not change the name, attributes, or parent
/// of this class.
/// </summary>
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
   
    IDTSConnectionManager100 connMgr;

    /// <summary>
    /// This method is called once, before rows begin to be processed in the data flow.
    ///
    /// You can remove this method if you don't need to do anything here.
    /// </summary>
    public override void PreExecute()
    {
        base.PreExecute();
        /*
         * Add your code here
         */
        connMgr = this.Connections.MyFlatFileConnectionMgr;
    }

    /// <summary>
    /// This method is called after all the rows have passed through this component.
    ///
    /// You can delete this method if you don't need to do anything here.
    /// </summary>
    public override void PostExecute()
    {
        base.PostExecute();
        /*
         * Add your code here
         */
    }

    public override void CreateNewOutputRows()
    {
        /*
          Add rows by calling the AddRow method on the member variable named "<Output Name>Buffer".
          For example, call MyOutputBuffer.AddRow() if your output was named "MyOutput".
        */
        JavaScriptSerializer js = new JavaScriptSerializer();

        byte[] jsonbyte = System.IO.File.ReadAllBytes(connMgr.ConnectionString);
        string reviewConverted = System.Text.Encoding.ASCII.GetString(jsonbyte);


        // deserialize the string
        jData jdata = js.Deserialize<jData>(reviewConverted);

        foreach (files f in jdata.rows)
        {
            Output0Buffer.AddRow();
           
            Output0Buffer.id = string.IsNullOrEmpty(f.id) ? "" : f.id.ToString();
            Output0Buffer.dis = string.IsNullOrEmpty(f.dis) ? "" : f.dis.ToString();
            Output0Buffer.siteRef = string.IsNullOrEmpty(f.siteRef) ? "" : f.siteRef.ToString();
            Output0Buffer.assetGmars = string.IsNullOrEmpty(f.assetGmars) ? "" : f.assetGmars.ToString();
            Output0Buffer.assetVfa = string.IsNullOrEmpty(f.assetVfa) ? "" : f.assetVfa.ToString();
            Output0Buffer.equipRef = string.IsNullOrEmpty(f.equipRef) ? "" : f.equipRef.ToString();
        }
    }

}

internal class jData
{
    public files[] rows { get; set; }
}

internal class files
{
    public string id { get; set; }
    public string dis { get; set; }
    public string siteRef { get; set; }
    public string assetGmars { get; set; }
    public string assetVfa { get; set; }
    public string equipRef { get; set; }
}


Hope you like it.



Posted By: MR. JOYDEEP DAS

2 comments:

  1. Microsoft SQL Server 2019 Standard provides additional capability and improvements database features. like SQL Server database engine, SQL Server Analysis Services, SQL Server Machine Learning Services, SQL Server on Linux, and SQL Server Master Data Services. Microsoft SQL Server Standard can build rich content management applications

    ReplyDelete
  2. Nice Post, Get life time license key of Microsoft Office 2013 Professional Plus from our website at lowest cost. Microsoft Office 2013 Professional Plus takes you one step ahead in expanding business and exclusively designed with the state-of the-art applications right at your fingertips to meet the growing business needs. It delivers you all from professional presentations , managing emails, updating and tracking of calendar, editing and organizing your documents with updated tools. Professionals can create attractive documents with ease from anywhere. You stay connected round the clock through cloud network.

    ReplyDelete