IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Import fichier excel dans base de données via interface graphique en java


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant (domaine de prédilection java)
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant (domaine de prédilection java)
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Par défaut Import fichier excel dans base de données via interface graphique en java
    Bonjour, je ne sais pas si c'est le bon endroit pour poster mon problème, mais voila, j'ai créé une appli dont les données de la base venaient d'un fichier excel. A ce moment-là j'ai réalisé l'import du fichier dans une table via SSMS, ensuite j'ai alimenté ma base en respectant les contraintes par du code. Enfin, la table créée au début fut supprimée.
    A présent, pour les besoins de mise à jour massive, je voudrais intégrer dans mon appli une fonction d'import, qui serait transparente pour les utilisateurs (ils n'auraient pas à rentrer dans SSMS pour le faire).
    Le but du jeu c'est que lorsque l'on choisit un fichier et que l'on clique sur "importer":
    1-->Une table est créée en base avec les mêmes noms de colonne et les mêmes données (naturellement!!) que le fichier excel,
    -->les données sont "acheminées" vers les différentes tables
    -->On n'ajoute que les données qui ne sont pas encore présentes
    4--> La table temporaire est supprimée.

    Est-ce que cela est réalisable? si oui, comment(pour le point 1 et 4 seulemnet)?
    Merci,

  2. #2
    Membre éprouvé Avatar de pulsdrum
    Homme Profil pro
    MVP SQL Server - Consultant en Business Intelligence - MCITP, MCTS et MCSA SQL Server 2008/2012
    Inscrit en
    Juillet 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : MVP SQL Server - Consultant en Business Intelligence - MCITP, MCTS et MCSA SQL Server 2008/2012
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 61
    Par défaut Oui c'est possible !
    Bonjour,

    L’ETL de Microsoft SSIS est fait pour cela.

    Voici les différentes étapes :
    • Créer un nouveau package SSIS
    • Créer un nouveau paramètre contenant l’adresse de ton fichier Excel
    • Créer une nouvelle source de donnée Excel avec comme Expressions « Property : ExcelFilePath » ton paramètre créé précédemment
    • Créer les différentes étapes d’extraction/transformation/chargement
    • Une fois ton package Builder, tu l’exécute dans ton application avec la commande Dtexec en lui passant comme paramètre le chemin de ton fichier Excel à charger.

    ++

  3. #3
    Membre confirmé
    Homme Profil pro
    Etudiant (domaine de prédilection java)
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant (domaine de prédilection java)
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Par défaut
    Merci pour ta réponse pulsdrum . Cependant, ne l'ayant jamais fait, j'ai du mal à "visualiser" les étapes. Aurais-tu un lien à me proposer pour que je m'y mette tout de suite??

  4. #4
    Membre éprouvé Avatar de pulsdrum
    Homme Profil pro
    MVP SQL Server - Consultant en Business Intelligence - MCITP, MCTS et MCSA SQL Server 2008/2012
    Inscrit en
    Juillet 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : MVP SQL Server - Consultant en Business Intelligence - MCITP, MCTS et MCSA SQL Server 2008/2012
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 61
    Par défaut Formation SSIS
    En effet cela peut te paraitre un peu barbare si tu ne connais pas encore SSIS

    Un didacticiel est présent à cette adresse : ICI

  5. #5
    Membre éprouvé
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Billets dans le blog
    2
    Par défaut
    Perso j'ai mis 4 heure à comprendre comment injecter un fichier multi page dans ma base. Mais maintenant, il me faut moins de 10 minutes.

    SSIS (SQL Server Integration Services)
    est un outil d'intégration de données dasn une BDD.
    Tu peux faire cela par fichier plat, xml, excel ... et plein d'autre option comme retravaillé la forme de tes données

    Cela se fait par une interface graphique, c'est très conviviale et facile à comprendre le paramétrage

    Tu crée une tache de flux de données, une connexion de fichier excel, une connexion à ta BDD.
    Puis tu n'as plus qu'à mapper les colonne de ton excel sur la table souhaitée

    Voilà dans les grandes lignes

  6. #6
    Membre confirmé
    Homme Profil pro
    Etudiant (domaine de prédilection java)
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant (domaine de prédilection java)
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Par défaut
    Merci pour les réponses les gens,
    @pulsdrum, paradoxalement j'ai déja utilisé SSIS sans véritablement m'en rendre compte (lors de l'import du fichier excel de base).
    @Browny, quitte à y mettre 5h, je n'y vois aucun inconvénient tant que cela me permettra d'atteindre mon objectif. Et l'interface graphique dont tu parles, est-ce l'interface d'un package SSIS disponible par exemple sous Sql server 2008? dans ce cas, comment va-t-on l'appeler depuis mon appli?
    Bref....je vais pas vous ennuyer plus longtemps avec des questions de non-initié, donc je fonce immédiatement en découdre avec cet ETL/SSIS "stuff".
    Je reviens vers vous pour d'autres questions.

  7. #7
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Citation Envoyé par pulsdrum Voir le message
    Bonjour,

    L’ETL de Microsoft SSIS est fait pour cela.

    Voici les différentes étapes :
    • Créer un nouveau package SSIS
    • Créer un nouveau paramètre contenant l’adresse de ton fichier Excel
    • Créer une nouvelle source de donnée Excel avec comme Expressions « Property : ExcelFilePath » ton paramètre créé précédemment
    • Créer les différentes étapes d’extraction/transformation/chargement
    • Une fois ton package Builder, tu l’exécute dans ton application avec la commande Dtexec en lui passant comme paramètre le chemin de ton fichier Excel à charger.

    ++
    Ce n'est malheureusement pas toujours si simple.
    En effet, il n'est pas dit que SSIS (ou plutot DTEXEC) soit au même endroit qu'ou tourne l'interface java et encore moins ou se trouve le fichier excel.
    Un autre soucis est la localisation du fichier excel, souvent sur un poste client.
    Donc dans une architecture n-tier, on imagine assez facilement l'utilisateur traiter son fichier excel sur son poste client, l'interface java sur un front-end (avec l'application server... ou pas, dans ce cas on rajoute un tier) et ensuite le serveur DB (avec segregation... ou pas du serveur SSIS).
    Après reste les droits nécéssaires pour exécuter DTEXEC et aussi les droits d'insérer dans la DB.

    Je rajouterai donc au minimum la copie du fichier excel vers un share accessible par le compte exécutant le package (on se détache du poste client).
    Ensuite, il y aura aussi peut-être le besoin de creer un job executant le package SSIS avec différent credentials.

    Bref, quelque chose qui parait simple en théorie mais qui peut vite devenir un casse-tête. L'intégration SQL Server/Excel étant à mon gout faible et ratée.

  8. #8
    Membre éprouvé Avatar de pulsdrum
    Homme Profil pro
    MVP SQL Server - Consultant en Business Intelligence - MCITP, MCTS et MCSA SQL Server 2008/2012
    Inscrit en
    Juillet 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : MVP SQL Server - Consultant en Business Intelligence - MCITP, MCTS et MCSA SQL Server 2008/2012
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 61
    Par défaut
    Je pense que tu noircis un peu le tableau. Voici une configuration simple à mettre en place :

    - Un répertoire partagé sur le serveur
    - Ton programme Java permet à l'utilisateur de choisir un fichier Excel et l'envoi dans le répertoire partagé
    - Un Job SQL scrute le répertoire partagé, lorsqu'un fichier Excel y est présent, le package SSIS l'intègre.

    ++

  9. #9
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Noircir le tableau, non, je parle de problématique réaliste rencontrée dans le milieu professionel.
    Pourquoi je dis que la problématique de l'intégration entre les 2 technos n'est pas réussie ?
    Car si tu considères le nombre de composants à mettre en place (et à maintenir (migration/DRP...)) nécéssaires pour un tâche qui devrait être si simple à priori, je trouve que cela fait beaucoup.
    De plus il y a pas mal de soucis avec les drivers excel à utiliser avec SSIS qui nécéssitent l'exécution des packages en 32bit.
    Concernant le job qui scrute le folder d'input, cela mène à de l'asynchrone ou avoir un process en boucle infinie sur le serveur.
    Quid du multiuser ?

    Je trouve qu'on est loin de l'idée end-user qui veut juste selectionner un fichier, appuyer sur un bouton et tout charger dans la DB directement.

  10. #10
    Membre confirmé
    Homme Profil pro
    Etudiant (domaine de prédilection java)
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant (domaine de prédilection java)
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Par défaut
    wow wow wow!!! les copains... je suis pas encore un expert SQL Server(j'en suis qu'à la leçon 3 du didacticiel ) et je suis pas encore arrivé à dtExec, ni ne sait comment créer un job SQL(du moins pas au moment où j"écris). Merci pour le lien pulsdrum, je regarde ça vivement tout de suite.
    Ptit_Dje, merci également d'émettre des réserves, t'as lu mon problème, selon toi, comment pourrais-je faire sans l'ETL? ou plutôt, comment t'arrives à contourner ces contraintes pour faire ce que je veux faire?
    Si l'exécution du package se fait à partir d'un seul poste, en local, et la base de données modifiée est ensuite substituée à celle présente sur le serveur, est-ce que ça contribuerait à éclaircir le tableau??

Discussions similaires

  1. [AC-2010] importer fichier txt dans base de données
    Par lambmarco dans le forum Access
    Réponses: 1
    Dernier message: 07/03/2014, 13h10
  2. Insérer données fichier Excel dans base de données
    Par minooo dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 01/11/2013, 16h33
  3. Import fichier Excel base de données via interface graphique Java
    Par cedy-kassy dans le forum Général Java
    Réponses: 5
    Dernier message: 13/07/2012, 09h54
  4. importation fichier excel dans base access existante
    Par stabil0 dans le forum Access
    Réponses: 2
    Dernier message: 25/08/2009, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo