GNT sans publicité, site mobile, fonctionnalitées exclusives...

Requete sur un flux XML > 8000 carateres

Le
Eric
/* ;-)
Bonjour,

j'utilise "sp_xml_preparedocument" et "OPENXML" pour faire des requêtes à
partir de données XML. Cela donne quelque chose du genre :
*/
--
-- fichier XML à lire
--
declare @xmlfile varchar(255)
set @xmlfile = 'C:\Customers.xml'

--
-- recup. du contenu du fichier XML
--
DECLARE @doc varchar(8000)
create table #txml (xml_data text)
truncate table #txml

exec(
'BULK INSERT #txml FROM ''' + @xmlfile + ''' ' +
' WITH (
FIELDTERMINATOR = '''',
ROWTERMINATOR = ''''
) '
)

select @doc = xml_data from #txml
drop table #txml
--


--
-- handle local du doc XML
--
DECLARE @idoc int
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
--


--
-- SELECT avec OPENXML
--
SELECT * FROM OPENXML (@idoc, '/ROOT/Customer', 2)
WITH (
CustomerID varchar(10),
CustomerName varchar(255)
)
--


--
-- suppr. du handle local
--
EXEC sp_xml_removedocument @idoc
--

/*
voila, ça marche, mais pas si le fichier XML dépasse une certaine
taille. En fait je suis limité à cause de la variable @doc qui est déclarée
comme varchar(8000). Je n'ai pas trouvé de solution pour pouvoir lire des
fichiers XML dépassant 8 Ko.

Quelqu'un a t-il une idée ?

Merci d'avance,
Eric
*/
Lire les 2 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alain
Le #11665701
Et en essayant avec un type Text ?

Alain

"Eric" news:40d996c9$0$21501$
/* ;-)
Bonjour,

j'utilise "sp_xml_preparedocument" et "OPENXML" pour faire des requêtes à
partir de données XML. Cela donne quelque chose du genre :
*/
-----------------------------------------------------------------
-- fichier XML à lire
-----------------------------------------------------------------
declare @xmlfile varchar(255)
set @xmlfile = 'C:Customers.xml'

-----------------------------------------------------------------
-- recup. du contenu du fichier XML
-----------------------------------------------------------------
DECLARE @doc varchar(8000)
create table #txml (xml_data text)
truncate table #txml

exec(
'BULK INSERT #txml FROM ''' + @xmlfile + ''' ' +
' WITH (
FIELDTERMINATOR = '''',
ROWTERMINATOR = ''''
) '
)

select @doc = xml_data from #txml
drop table #txml
-----------------------------------------------------------------


-----------------------------------------------------------------
-- handle local du doc XML
-----------------------------------------------------------------
DECLARE @idoc int
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-----------------------------------------------------------------


-----------------------------------------------------------------
-- SELECT avec OPENXML
-----------------------------------------------------------------
SELECT * FROM OPENXML (@idoc, '/ROOT/Customer', 2)
WITH (
CustomerID varchar(10),
CustomerName varchar(255)
)
-----------------------------------------------------------------


-----------------------------------------------------------------
-- suppr. du handle local
-----------------------------------------------------------------
EXEC sp_xml_removedocument @idoc
-----------------------------------------------------------------

/*
voila, ça marche, ... mais pas si le fichier XML dépasse une certaine
taille. En fait je suis limité à cause de la variable @doc qui est


déclarée
comme varchar(8000). Je n'ai pas trouvé de solution pour pouvoir lire des
fichiers XML dépassant 8 Ko.

Quelqu'un a t-il une idée ?

Merci d'avance,
Eric
*/








Eric
Le #11664901
j'ai essayé, mais j'obtiens :

Serveur : Msg 2739, Niveau 16, État 1, Ligne 2
Les types de données text, ntext et image sont interdits dans les variables
locales.

Une autre méthode serait la suivante :
http://sqlxml.org/faqs.aspx?faqB
mais je ne l'ai pas encore testée, je préfèrerais trouver quelque chose de
plus simple, donc je continue à chercher.

Eric



"Alain" news:
Et en essayant avec un type Text ?

Alain

"Eric" news:40d996c9$0$21501$
> /* ;-)
> Bonjour,
>
> j'utilise "sp_xml_preparedocument" et "OPENXML" pour faire des requêtes


à
> partir de données XML. Cela donne quelque chose du genre :
> */
> -----------------------------------------------------------------
> -- fichier XML à lire
> -----------------------------------------------------------------
> declare @xmlfile varchar(255)
> set @xmlfile = 'C:Customers.xml'
>
> -----------------------------------------------------------------
> -- recup. du contenu du fichier XML
> -----------------------------------------------------------------
> DECLARE @doc varchar(8000)
> create table #txml (xml_data text)
> truncate table #txml
>
> exec(
> 'BULK INSERT #txml FROM ''' + @xmlfile + ''' ' +
> ' WITH (
> FIELDTERMINATOR = '''',
> ROWTERMINATOR = ''''
> ) '
> )
>
> select @doc = xml_data from #txml
> drop table #txml
> -----------------------------------------------------------------
>
>
> -----------------------------------------------------------------
> -- handle local du doc XML
> -----------------------------------------------------------------
> DECLARE @idoc int
> EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
> -----------------------------------------------------------------
>
>
> -----------------------------------------------------------------
> -- SELECT avec OPENXML
> -----------------------------------------------------------------
> SELECT * FROM OPENXML (@idoc, '/ROOT/Customer', 2)
> WITH (
> CustomerID varchar(10),
> CustomerName varchar(255)
> )
> -----------------------------------------------------------------
>
>
> -----------------------------------------------------------------
> -- suppr. du handle local
> -----------------------------------------------------------------
> EXEC sp_xml_removedocument @idoc
> -----------------------------------------------------------------
>
> /*
> voila, ça marche, ... mais pas si le fichier XML dépasse une certaine
> taille. En fait je suis limité à cause de la variable @doc qui est
déclarée
> comme varchar(8000). Je n'ai pas trouvé de solution pour pouvoir lire


des
> fichiers XML dépassant 8 Ko.
>
> Quelqu'un a t-il une idée ?
>
> Merci d'avance,
> Eric
> */
>
>
>
>
>
>




Publicité
Suivre les réponses
Poster une réponse
Anonyme