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