none
SSIS Import fichier Excel : une cellule = une ligne RRS feed

  • Question

  • Bonjour à tous,

    Je cherche depuis un moment la solution à mon problème mais sans succès.

    Pour faire simple, un utilisateur upload un fichier Excel qui doit être intégré en base.

    Mon premier soucis vient du fait que la structure de l'onglet source peut être modifiée d'un fichier à l'autre (nombre et entêtes de colonnes différents).

    De plus, l'intégration doit se faire dans ce sens :

    1- récupération de la plage identifiée (paramètres insérés dans une table spécifique au package)

    2- chaque cellule fera l'objet d'une insertion dans une table. Une cellule = une ligne. Toutes les informations de cette ligne insérée ne sont pas récupérées du fichier Excel mais pourront provenir d'une autre source (passage de paramètres comme le 1-)

    Très sincèrement, je ne sais pas si ce cas est possible avec SSIS ou ne vaut il pas mieux gérer directement ce cas dans mon code behind, mais du coup les perfs ne vont pas être terrible ? ou avez-vous une autre solution ?

    Merci de votre aide

    mercredi 13 mars 2013 15:47

Réponses

  • Tu peux tjrs utiliser la commande bcp par exemple pour cela qui rend ton import dynamique en fonction de ta structure. Cela va te générer une table avec la structure associée et tu pourras traiter les données de cette table avec les processus business qui te concernent. Tu peux encapsuler le tout dans SSIS et procéder aux transformations nécessaires après import.

    ++


    MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1

    • Marqué comme réponse bzouik mercredi 20 mars 2013 10:29
    lundi 18 mars 2013 15:38
    Modérateur

Toutes les réponses

  • Bonjour

    Essayez d’écrire du code pour cette transformation.

    En ce qui concerne la vitesse, pour des fichiers Excel qui ne sont pas très grandes, la différence de temps ne sera pas assez grande.

    Aussi, vous pouvez créer un outil qui transforme le fichier Excel dans un fichier texte avec le format voulu (1 cellule Excel par ligne fichier texte)  et utiliser SSIS pour un bulk upload du ce fichier texte.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 14 mars 2013 11:52
    Modérateur
  • Tu peux tjrs utiliser la commande bcp par exemple pour cela qui rend ton import dynamique en fonction de ta structure. Cela va te générer une table avec la structure associée et tu pourras traiter les données de cette table avec les processus business qui te concernent. Tu peux encapsuler le tout dans SSIS et procéder aux transformations nécessaires après import.

    ++


    MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1

    • Marqué comme réponse bzouik mercredi 20 mars 2013 10:29
    lundi 18 mars 2013 15:38
    Modérateur
  • Merci à tous les deux pour vos réponses.

    mikedavem, tu veux dire qu'il faudrait que j'insère les données en suivant la structure du fichier Excel dans une table "temporaire" via bcp et ensuite je pourrais requêter et transformer mes données via ssis pour les intégrer finalement dans la table cible ?

    lundi 18 mars 2013 15:43
  • Oui c'est cela.

    Comme ta structure de départ est changeante dans Excel, tu auras forcément une structure de table à l'arrivée qui potentiellement risque d'être différente. Ensuite dans ton workflow tu pourras traiter cette table temporaire vers ta table cible.

    ++


    MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1

    mardi 19 mars 2013 20:25
    Modérateur
  • ok je vois bien le principe.

    Ca va néanmoins me faire travailler sur plusieurs tables "temporaires" avant d'attaquer purement l'integration via ssis.

    Car BCP va envoyer les données brut dans une table ayant un format identique au fichier source Excel, puis il faut que je retransfère ces données dans une autre table avec une structure proche de la table cible (une cellule excel = une ligne). Mais si c'est faisable comme cela et pas trop pénalisant pour les perfs, je pense que je vais essayer ça.

    Merci mikedavem

    mercredi 20 mars 2013 10:29