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

Administration SQL Server Discussion :

Définir name space dans sp_xml_preparedocument [2008R2]


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 29
    Par défaut Définir name space dans sp_xml_preparedocument
    Bonjour à tous,

    Voici le contexte de mon problème.

    J'ai réalisé un import d'un fichier XML en WebDev 19. Cet import marchait très bien jusqu'au jour où le fichier est passé de 800 Ko à 50 Mo, de 5 000 lignes à plus de 310 000...

    Moi aussi j'ai eu mal en l'apprenant. L'import met maintenant 6h pour être traité. Ce qui m’explose tous les TIME OUT.

    Après des jours de recherche, de test j'ai trouvé un script SQL qui me permet de traiter le fichier complet en moins de 5 minutes.
    Le problème est que je n'arrive pas à définir le NAMESPACE.

    Le script est fonctionnel si je retire du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xmlns="http://developer.cognos.com/schemas/xmldata/1/"
    Quelqu'un aurait-il une solution ?
    Voici un extrait du fichier :
    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
    <?xml version="1.0" encoding="utf-8"?>
    <dataset xmlns="http://developer.cognos.com/schemas/xmldata/1/"  xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
    <!--
    <dataset
        xmlns="http://developer.cognos.com/schemas/xmldata/1/"
        xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
        xs:schemaLocation="http://developer.cognos.com/schemas/xmldata/1/ xmldata.xsd"
    >
    -->
    <data>
            <row>
                <value>1</value>
                <value>2</value>
                <value>3</value>
                <value>4</value>
            </row>
            <row>
                <value>5</value>
                <value>6</value>
                <value>7</value>
                <value>8</value>
            </row>
    </data>
    </dataset>
    et voici le script SQL permettant de le traiter
    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
    DECLARE @XmlDocumentHandle int
    DECLARE @XmlDocument varchar(max)
    declare @myDoc xml
    ;WITH XMLNAMESPACES('http://developer.cognos.com/schemas/xmldata/1/' as dc) 
     
     
    SELECT @myDoc = BulkColumn
    FROM OPENROWSET(BULK 'C:/test.xml'
    , SINGLE_CLOB) AS X
     
    -- Create an internal representation of the XML document.
     
    EXEC sp_xml_preparedocument @XmlDocumentHandle OUTPUT, @myDoc--, '<dataset  xmlns="http://developer.cognos.com/schemas/xmldata/1/"/>'
    -- Execute a SELECT stmt using OPENXML rowset provider.
     
    SELECT *
    FROM OPENXML (@XmlDocumentHandle, '/dataset/data/row',2)
    WITH (value1     varchar(10) 'value[1]',
    	value2     varchar(10) 'value[2]',
    	value3     varchar(10) 'value[3]',
    	value4     varchar(10) 'value[4]')
    EXEC sp_xml_removedocument @XmlDocumentHandle

  2. #2
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 29
    Par défaut
    Bonjour a tous,

    j'ai trouvé une solution pour mon problème.

    Voici le code modifié :

    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
     
    DECLARE @XmlDocumentHandle int
    DECLARE @XmlDocument varchar(max)
    declare @myDoc xml
     
    SELECT @myDoc = BulkColumn
    FROM OPENROWSET(BULK 'C:/test.xml'
    , SINGLE_CLOB) AS X
     
    -- Create an internal representation of the XML document.
     
    EXEC sp_xml_preparedocument @XmlDocumentHandle OUTPUT, @myDoc, '<dataset  xmlns:maxbo="http://developer.cognos.com/schemas/xmldata/1/"/>'
    -- Execute a SELECT stmt using OPENXML rowset provider.
     
    SELECT *
    FROM OPENXML (@XmlDocumentHandle, '/maxbo:dataset/maxbo:data/maxbo:row',2)
    WITH (value1     varchar(10) 'value[1]',
    	value2     varchar(10) 'value[2]',
    	value3     varchar(10) 'value[3]',
    	value4     varchar(10) 'value[4]')
    EXEC sp_xml_removedocument @XmlDocumentHandle

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

Discussions similaires

  1. Comment définir un tableau dans une classe?
    Par Pragmateek dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 30/04/2006, 20h34
  2. Réponses: 6
    Dernier message: 17/03/2006, 12h23
  3. définir la position dans un css
    Par pascal67 dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 15/01/2006, 16h38
  4. [CSS] Définir un évènement dans un CSS
    Par PierrotY dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 30/03/2005, 11h49
  5. comment savoir définir les figure dans opengl
    Par romainhoarau2764 dans le forum OpenGL
    Réponses: 1
    Dernier message: 05/03/2005, 19h30

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