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

  1. #1
    Membre du Club
    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
    Points : 62
    Points
    62
    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 averti 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 : 39
    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
    Points : 335
    Points
    335
    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 du Club
    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
    Points : 62
    Points
    62
    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 averti 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 : 39
    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
    Points : 335
    Points
    335
    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 chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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
    Points : 1 839
    Points
    1 839
    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
    Si débugger est l'art d'enlever les bugs ... alors programmer est l'art de les créer

  6. #6
    Membre du Club
    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
    Points : 62
    Points
    62
    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 averti 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 : 39
    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
    Points : 335
    Points
    335
    Par défaut
    Oui en effet tu l’as déjà utilisé sans t’en rendre compte lorsque tu as demandé à l’assistant d’import de SSMS d’importer ton fichier Excel, celui-ci a créé pour toi un package SSIS.

    Tu peux exécuter le package SSIS de plusieurs façon et notamment grâce à la commande Dtexec.

    Je pense qu’il te faut passer quelque temps déçu puis essai d’effectuer les étapes que je t’ai citées, ça sera un bon exercice

    ++

  8. #8
    Membre du Club
    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
    Points : 62
    Points
    62
    Par défaut
    Snif, j'ai sql server 2008 express, et malheureusement l'Integration Services n'y est pas.....comment faire dans ce cas?

  9. #9
    Membre averti 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 : 39
    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
    Points : 335
    Points
    335
    Par défaut
    Tu peux télécharger la version d'essai de SQL Server 2008 R2 et profiter de 180 jours d'essai

    ++

  10. #10
    Membre du Club
    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
    Points : 62
    Points
    62
    Par défaut
    Merci pour le lien .
    J'ai une question supplémentaire: Après création d'un package SSIS sur SQl server version d'éval, peut-on l'utiliser n'importe où? j'entend par là récupérer le package et l'inclure dans sql server Express pour m'affranchir de la limitation de la version d'éval. Est-ce que cette opération est possible? je demande parce qu'apparemment la licence coûterait quelque chose comme 8000 euros??? Bref j'ai hâte d'utiliser DtExec via mon appli java

  11. #11
    Membre averti 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 : 39
    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
    Points : 335
    Points
    335
    Par défaut
    Une fois ton package SSIS finalisé, tu peux l’exécuter en effet de n’importe où à condition d’avoir une licence SQL Server sur la machine (SSIS étant un Server Product) !

    Il y a plusieurs modes de licence :
    - Par siège
    - Par serveur
    - Par processeur : pas besoin de CAL (Grosse entreprise)

    Si tu as moins de 50 personnes qui doivent accéder a t’es Données/Rapports/Cubes… Il est préférable d’utiliser les CAL.

    SQL Server 2008 R2 Standard coute en mode serveur 628.85 euros / ans auquel il faudra rajouter une CAL soit 114.79 euros / ans, soit 821.85 euros par an (1/10 de ton prix )

    SQL Server 2008 R2 Licence guide : ICI

    ++

  12. #12
    Membre du Club
    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
    Points : 62
    Points
    62
    Par défaut
    Punaise, je crois que je vais mourir d'impatience. Excusez le terme , mais ça fait c***r l'install de sql server(c'est marrant j'avais déjà oublié combien j'avais galéré rien que pour installer la version express). Bon en fait, j'ai téléchargé ce qu'ils ont appelé "exécutable auto extractible", ensuite décompressé dans un dossier, et dans le dossier "setup" y a pas de .exe, que des .msi. Je fais comment moi pour installer??? bien sûr je googlise, mais si vous avez une solution plus directe....sachant que je souhaiterais l'utiliser pour l'instant sous win xP...Merci!!!

  13. #13
    Membre averti 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 : 39
    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
    Points : 335
    Points
    335
    Par défaut
    Les .MSI sont des fichiers d'installation Windows et fonctionnent comme des .Exe, il suffit de double cliquer dessus

    ++

  14. #14
    Membre du Club
    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
    Points : 62
    Points
    62
    Par défaut
    Il y a plusieurs fichiers .msi. Je dois cliquer sur lequel? ou plutôt commencer par lequel? sur le site de microsoft, ils expliquent la procédure à partir du moment où on a l'assistant d'installation, or pour l'instant j'ai que dalle!

  15. #15
    Membre averti 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 : 39
    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
    Points : 335
    Points
    335
    Par défaut
    Liste-moi les noms des .MSI

    ++

  16. #16
    Membre du Club
    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
    Points : 62
    Points
    62
    Par défaut
    Je te joins 2 copies d'écran (y a beaucoup de fichiers). La première est l'ensemble des fichiers et dossiers présents dans le Dossier "Setup", la seconde est l'ensemble des fichiers contenus dans le répertoire "X86"(je suis sous xp...)
    Images attachées Images attachées   

  17. #17
    Membre averti 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 : 39
    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
    Points : 335
    Points
    335
    Par défaut
    En effet ils ne sont pas très parlants !

    Regarde dans les dossiers x64 x86 (suivant ton processeur).

    (Sinon à ta place je commencerai pas exécuter le plus gros des .MSI )

    ++

  18. #18
    Membre du Club
    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
    Points : 62
    Points
    62
    Par défaut
    Bonjour pulsdrum,
    J'ai enfin pu installer la version d'évaluation de sql server 2008R2 , et je commence à l'instant la leçon 2 du didacticiel dont tu m'as fourni le lien.
    Voila, j'ai été quelque peu subjugué par la fonction de "recherche" sur les clés primaires d'une autre table en leçon 1.
    Alors j'ai eu une petite idée, et vu que t'as l'air de t'y connaître pas mal, je voulais savoir si l'implémentation est possible.
    En fait, le problème qui m'a poussé à ouvrir cette discussion est la base de données dont le MLR est en pièce jointe.
    Au départ, j'ai écrit du code java pour importer les données du fichier excel dans la base avec un mappage correct dans les tables, élimination des doublons, respect des contraintes....etc. Cela a nécessité plusieurs étapes:
    -Création d'une table "temporaire" à partir du fichier excel (SSIS sans le savoir...),
    -Renommage des colonnes afin de mieux les identifier dans mon code java,
    -Ecriture du code java qui fait un "SELECT" sur la table temporaire et qui pour chaque ligne:
    *vérifie l'existence d'une donnée avant insertion
    *Récupère la clé primaire générée dans une table, puis l'insère dans la(es) table(s) qui la référence(ent)
    Et ainsi de suite.
    Je voudrais simplement savoir si l'ETL pourrait faire tout le bazar.. ça me simplifierait vraiment la vie et je pourrais passer rapidement à autre chose...
    Images attachées Images attachées   

  19. #19
    Membre averti 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 : 39
    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
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    En effet SSIS est fait pour cela « Extract Transform Load » (ETL)

    Tu trouveras à l’adresse suivante quelques exemples de package SSIS : ICI

    ++

  20. #20
    Membre chevronné

    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 : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    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.

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