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
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Alain
Et en essayant avec un type Text ?
Alain
"Eric" wrote in message 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
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 */
Et en essayant avec un type Text ?
Alain
"Eric" <a@b.c> wrote in message
news:40d996c9$0$21501$626a14ce@news.free.fr...
/* ;-)
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
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.
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
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
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" a écrit dans le message de news:
Et en essayant avec un type Text ?
Alain
"Eric" wrote in message 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 > */ > > > > > >
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" <the__alain@lkjdk.com> a écrit dans le message de
news:OFCKvQ1XEHA.2868@TK2MSFTNGP09.phx.gbl...
Et en essayant avec un type Text ?
Alain
"Eric" <a@b.c> wrote in message
news:40d996c9$0$21501$626a14ce@news.free.fr...
> /* ;-)
> 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
> */
>
>
>
>
>
>
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" a écrit dans le message de news:
Et en essayant avec un type Text ?
Alain
"Eric" wrote in message 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 > */ > > > > > >