Migration MSSQL vers MongoDB avec SSIS

De nombreux projets tendent de plus en plus vers l'innovation sur des nouvelles technologies faisant appel à des frameworks tels qu'AngularJS ou MongoDB. Cependant,  l'inconvénient intervient lorsqu'un système technique dont la base de données est relationnelle existe et doit être migré vers un système de Collection/documents tel que MongoDB. Il faut pouvoir facilement rattraper les données existantes sans passer par des scripts. De nombreux ETL existe comme SQLtoMongo (assez basique, sans transformation), je vais focaliser ce post sur "comment migrer des données MSSQL vers du MongoDB".

Prérequis

Pour que SSIS reconnaisse MongoDB, des apis sont présents et permettent d'interagir avec celui-ci.

Liens :

2 choix s'offrent à vous, soit une installation des dll par GAC ou référence manuel sur le projet :

  • gacutil /i MongoDB.Bson.dll
  • gacutil /i MongoDB.Driver.dll

 

Procédure

1) Créer un nouveau projet SSIS et un package SSDT

Ajouter un composant de type "Data Flow Task"

2) Data Flow : Ajouter la source

Ajouter une source de type "OLE DB Source" avec une connexion vers la BDD MSSQL

en sélectionnant les colonnes que l'on veut migrer.

3) Data Flow : ajouter un script (pour la destination)

Ajouter un composant "Script Component" et le lier à la source.

Éditer le composant, puis sélectionner les colonnes à migrer.

Aller sur la zone "Script" puis cliquer sur "Edit Script...", une fenêtre de code s'offre à vous.

Modifier le code de la façon suivante, puis compiler le script.

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        var mongoConnString = "mongodb://localhost:27017";
        var mongoClient = new MongoClient(mongoConnString);
        var mongoServer = mongoClient.GetServer();
        var mongoDB = mongoServer.GetDatabase("res_test");

        MongoCollection installations = mongoDB.GetCollection("Installations");

        var installation = new Installation
        {
            InstallationId = Row.InstallationId,
            InsNom = Row.InsNom,
            EquipementId = Row.EquipementId,
            EquNom = Row.EquNom,            
        };

        installations.Insert(installation);
    }

    public class Installation
    {

        public Int64 InstallationId { get; set; }

        public string InsNom { get; set; }

        public Int64 EquipementId { get; set; }

        public string EquNom { get; set; }
    }

4) Vérification des données sur MongoDB / MSSQL

Liens :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *