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 :

Recherche outil pour transférer un lot de fichier .xml dans une base de donnée .sdf


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 54
    Points : 75
    Points
    75
    Par défaut Recherche outil pour transférer un lot de fichier .xml dans une base de donnée .sdf
    Bonjour,

    Je suis à la recherche d'un outil pour pouvoir transférer un lot de fichier .xml (plus de 5000 fichier) dans une base SQL server compact.

    J'ai déjà crée la base SQL server qui reprend tous les champs des fichiers XML.

    J'ai pensé faire un petit programme c# qui ouvrirai tous les fichiers et qui les ajouterais dans la BDD.

    Mais si vous connaissez un programme qui me permettrais de faire ça, ça irait plus vite

    Merci !

  2. #2
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Voici un exemple
    --> Table de destination : Cust
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE Cust(CustomerID  int PRIMARY KEY,
                      CompanyName varchar(20),
                      City        varchar(20));
    --> Fichier XML source de données : Customers.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <ROOT>
      <Customers>
        <CustomerID>1111</CustomerID>
        <CompanyName>Sean Chai</CompanyName>
        <City>New York</City>
      </Customers>
      <Customers>
        <CustomerID>1112</CustomerID>
        <CompanyName>Tom Johnston</CompanyName>
         <City>Los Angeles</City>
      </Customers>
      <Customers>
        <CustomerID>1113</CustomerID>
        <CompanyName>Institute of Art</CompanyName>
        <City>Chicago</City>
      </Customers>
    </ROOT>
    --> Ficher de mappage : Customermapping.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
       <xsd:element name="ROOT" sql:is-constant="1" >
         <xsd:complexType>
           <xsd:sequence>
             <xsd:element name="Customers" sql:relation="Cust" maxOccurs="unbounded">
               <xsd:complexType>
                 <xsd:sequence>
                   <xsd:element name="CustomerID"  type="xsd:integer" />
                   <xsd:element name="CompanyName" type="xsd:string" />
                   <xsd:element name="City"        type="xsd:string" />
                 </xsd:sequence>
               </xsd:complexType>
             </xsd:element>
           </xsd:sequence>
          </xsd:complexType>
         </xsd:element>
    </xsd:schema>
    --> Script Vbs de chargement : Insertcustomers.vbs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Dim FileValid
     
    set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0")
    objBL.ConnectionString = "provider=SQLOLEDB;data source=PP-EZ;database=AdventureWorks;integrated security=SSPI"
    objBL.ErrorLogFile = "c:\error.log"
     
    'Validate the data file prior to bulkload
    Dim sOutput 
    sOutput = ValidateFile("Customers.xml", "", "Customermapping.xml")
    WScript.Echo sOutput
     
    If FileValid Then
       ' Check constraints and initiate transaction (if needed)
       ' objBL.CheckConstraints = True
       ' objBL.Transaction=True
      'Execute XML bulkload using file.
      objBL.Execute "Customermapping.xml", "Customers.xml"
      set objBL=Nothing
    End If
     
    Function ValidateFile(strXmlFile,strUrn,strXsdFile)
     
       ' Create a schema cache and add Customermapping.xml to it.
       Dim xs, fso, sAppPath
       Set fso = CreateObject("Scripting.FileSystemObject") 
       Set xs = CreateObject("MSXML2.XMLSchemaCache.6.0")
       sAppPath = fso.GetFolder(".") 
       xs.Add strUrn, sAppPath & "\" & strXsdFile
     
       ' Create an XML DOMDocument object.
       Dim xd 
       Set xd = CreateObject("MSXML2.DOMDocument.6.0")
     
       ' Assign the schema cache to the DOM document.
       ' schemas collection.
       Set xd.schemas = xs
     
       ' Load XML document as DOM document.
       xd.async = False
       xd.Load sAppPath & "\" & strXmlFile
     
       ' Return validation results in message to the user.
       If xd.parseError.errorCode <> 0 Then
            ValidateFile = "Validation failed on " & _
                 strXmlFile & vbCrLf & _
                 "=====================" & vbCrLf & _
                 "Reason: " & xd.parseError.reason & _
                 vbCrLf & "Source: " & _
                 xd.parseError.srcText & _
                 vbCrLf & "Line: " & _
                 xd.parseError.Line & vbCrLf
                 FileValid = False
        Else
            ValidateFile = "Validation succeeded for " & _
                 strXmlFile & vbCrLf & _
                 "======================" & _
                 vbCrLf & "Contents to be bulkloaded" & vbCrLf
                 FileValid = True
        End If
    End Function
    /!\ Attention :
    * Tu dois modifier cette ligne : objBL.ConnectionString = "provider=SQLOLEDB;data source=PP-EZ;database=AdventureWorks;integrated security=SSPI"
    * ces trois fichiers doivent être dans le même répertoire.


    --> Test
    Dans la console DOS, aller dans le répertoire où se trouve les trois fichiers précédent, puis exécute le fichier Insertcustomers.vbs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\>Insertcustomers.vbs
    --> Si lors de l'exécution tu reçois une erreur du genre
    Un composant ActiveX ne peut pas créer un objet.: 'SQLXMLBulkLoad.SQLXMLBulkload.4.0'
    alors il faut installer "SQLXML 4.0"

    Source de l' exemple : http://msdn.microsoft.com/fr-fr/library/ms171806(v=sql.105).aspx

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 54
    Points : 75
    Points
    75
    Par défaut
    Merci !

    J'ai un peu galéré à l'adapter à mon cas mais ça à marcher !



    A la base je cherchais un outil ad-hoc avec une interface graphique sympathique.

  4. #4
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Avec les outils clic > clic > clic on ne sait pas ce qui se passe dernière et aussi on n'apprend pas grand chose, à la limite je dirai même que c'est abrutissant et infantilisant ces outils qui veulent tout faire à notre place ... pensez au plaisir que vous avez eu au moment vous avez dit "YES ! ça marche !" et c'est justement ça qui enrichit.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. intégrer les données d'un fichier XML dans une base de données Oracle 11
    Par pmboutteau dans le forum Persistance des données
    Réponses: 2
    Dernier message: 07/03/2014, 09h55
  2. [MySQL] Importer des fichiers XML dans une base de données (Easyphp)
    Par Boujoute dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 01/12/2011, 00h13
  3. stocker un fichier xml dans une base de données en sql
    Par yidboulmane dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/09/2008, 09h55
  4. Réponses: 1
    Dernier message: 09/05/2006, 12h00
  5. Intégration des fichier XML dans une base de données MySQL
    Par bebemoundjou dans le forum XQUERY/SGBD
    Réponses: 8
    Dernier message: 25/11/2005, 22h41

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