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 :

migration excel to sql


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 10
    Par défaut migration excel to sql
    bonjour

    je dois importer un gros fichier excel ( 16 onglets, 11Mo ) dans une bd sql.
    j ai a peu pres parcouru le net et ce forum pour trouver pas mal d informations mais je ne sais pas encore exactement comment faire!

    jusqu a maintenant, j arrive a importer un onglet, en passant par un fichier vb et des requetes.
    j ai vu qu on pouvait aussi utiliser des DTS mais j ai pas bien trouvé a quoi ca correspondait...

    j aimerais, ou plutot on me demande de creer des scripts sql.
    est ce possible de les executer a partir d un fichier vb?
    y a t il un autre moyen de lancer l execution de ces scripts?

    voila je crois qu il y a plein de possibilites mais je suis limite dans le tps et les connaissances ( sql, vb, c, asp, dos, html...) et suis preneur des avis, conseils et reponses sur mes questions!
    merci

  2. #2
    Membre expérimenté Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Par défaut
    Bonjour,

    est-ce que le SGBD est SQL Server ?? Je ne pense pas que cela concerne le langage SQL en particulier.

    Avec SQL Server on peut effectivement définir l'importation d'un fichier Excel, et quelles feuilles on veut mettre dans quelles tables. Pour un autre SGBD, je ne sais pas.

  3. #3
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 10
    Par défaut
    c est sql server oui, mais la version express!
    du coup j n ai pas acces aux generateurs de dts.

    bon en avancant un peu j ai opté pour un fractionnement des mes requetes en diverses fonctions vb.
    j utilise des scripts pour creer ma base, mes tables et relations, et les fonctions vb pour remplir ma bd
    je sais pas si c est la meilleure solution mais j en ai pas trouvé d autres facilement utilisable

  4. #4
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    C'est pour une importation en une fois, ou pour faire des imports réguliers ?

    Une autre solution peut être d'accéder à tes données depuis SQL Server en utilisant un serveur lié avec le driver Excel, ou OPENROWSET().

    EDIT : un peu d'aide ici : http://support.microsoft.com/Default.aspx?kbid=321686

  5. #5
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 10
    Par défaut
    salut

    c est pour un import en une seule fois

    je commence a y arriver en faisant des requetes du genre :

    delete from echeance


    INSERT INTO echeance(numpc,nomfacturee,idsfc,idcbcp,idsfcp,idcbc,idsp,idtypef,nbjinitiale,initialttce,initialhte)
    (select "N° Devis" as numpc,
    "N° Facture Définitif" as nomfacturee,
    idsfc='1',
    idcbcp='1',
    idsfcp='1',
    idcbc='1',
    idsp='1',
    idtypef='1',
    "Facturé NBJ" as nbjinitiale,
    "Facturé HT" as initialhte,
    "Facturé TTC" as initialttce
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 5.0;DATABASE=C:\INSTALLsuividefactu\EXCEL.xls;HDR=YES;IMEX=1', 'Select * from [esquisse$] where projet="aryon" '))

    je n arrive par contre pas a faire des requetes sur plusieurs onglets en meme temps.
    ( ici j aimerais prendre d autres valeurs, avec comme clé mon nompc, que je retrouve ds un autre onglet.. )

  6. #6
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Je ne crois pas que tu puisses prendre plusieurs onglets d'un coup.
    Le principe est d'importer chaque onglet séparément.

  7. #7
    Membre confirmé Avatar de Poisson59
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 213
    Par défaut
    essaye à l'aide d'une macro vb qui parcourera l'ensemble des onglets pour avoir au final un fichier du type

    insert into matable values ('Data1','Data2','Data3','....','TOTO');
    insert into matable values ('Data11','Data12','Data13','....','TUTU');

    etc....

    et ensuite tu le lance via un requeteur SQL du genre TOAD !!

    j'espere que je t'aurais un peu aidés

  8. #8
    Membre confirmé Avatar de Poisson59
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 213
    Par défaut
    Regarde ci joint mon ficheir EXCEL avec une macro
    edite la macro avec VB editor pour les explications

    CDLT

  9. #9
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 10
    Par défaut
    yep merci
    mais le but est de pas avoir de vb a realiser! tout faire juste avec des scripts sql.
    du coup pour la jointure de deux onglets j ai trouvé une solution ( comme quoi tout arrive! )

    voila l engin :

    INSERT INTO victory(champion,....,you)
    (select "OL1" as champion,
    "Libellé" as libellee,
    ....
    "youpi" as you
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 5.0;DATABASE=C:\INSTALL\EXCEL.xls;HDR=YES;IMEX=1', 'Select * from [fred$] '),
    OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 5.0;DATABASE=C:\INSTALL\EXCEL.xls;HDR=YES;IMEX=1', 'Select * from [tiago$] where projet="OL2REAL0" ')
    where "OL1"="OL2")

    avec OL1 dans l onglet fred et OL2 dans l onglet tiago! tout betement!


    maintenant il ne me reste plus qu'un petit probleme de recuperation de donnees. ex : j ai un 0 dans un champ excel, sql me recupere 3,678387487658393E-12 !!!

  10. #10
    Membre confirmé Avatar de Poisson59
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 213
    Par défaut
    OK
    merci pour l'info ca m'interesse aussi de consulter des fichier excel via SQL

    Cool

  11. #11
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Citation Envoyé par nimco23
    maintenant il ne me reste plus qu'un petit probleme de recuperation de donnees. ex : j ai un 0 dans un champ excel, sql me recupere 3,678387487658393E-12 !!!
    Est-ce que la cellule Excel a un type de données en particulier ?
    Et la colonne de la table, si tu changes son type de données ?

  12. #12
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 10
    Par défaut
    hum en fait mon fichier excel a ete cree et gere par des non informaticiens, du coup c est le meta basar la dedans!
    mais j ai trouvé la solution en castant mes donnees directement en faisant mes requetes sql!

    du genre :

    SELECT cast(("nombredeglacesalafraise") as numeric(20,3)) as glacealafraise,
    ....

    voila j arrive au bout!
    le sujet a un peu devié par rapport a l origine mais je pense que ca pourra etre utile a d'autres!

    merci

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2007, 10h54
  2. Migration de Excel vers Sql Server 2000
    Par josyde2006 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 03/01/2007, 00h59
  3. Migration HyperFile vers SQL SERVER
    Par mathll65 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/03/2004, 10h57
  4. Migration Oracle8i --> MS-SQL Server
    Par Aquarius dans le forum Migration
    Réponses: 11
    Dernier message: 24/12/2003, 15h03
  5. Migration de MS SQL 7 vers MS SQL server 2000
    Par jfphan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/10/2003, 12h24

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