<propiedades>
<registro>
<no_>1000001</no_>
<name>LOPEZ ALVAREZ</name>
</registro>
<registro>
<no_>1000002</no_>
<name>LOPEZ LOPEZ</name>
</registro>
</propiedades>
Muchas gracias anticipadas.
Un saludo
Una posibilidad de lo que indicas podr�a ser:
declare @a xml
set @a = '<propiedades>
<registro>
<no_>1000001</no_>
<name>LOPEZ ALVAREZ</name>
</registro>
<registro>
<no_>1000002</no_>
<name>LOPEZ LOPEZ</name>
</registro>
</propiedades>'
select i2.num.query('./text()') as no_
, i3.nombre.query('./text()') as name
from @a.nodes('propiedades/registro') i1(registro)
CROSS APPLY i1.registro.nodes('./no_') as i2(num)
CROSS APPLY i1.registro.nodes('./name') as i3(nombre)
--
-----------------------------
"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es f�cil, si ambas est�n congeladas."
Edward V. Berard, ingeniero inform�tico
"op.th" <op.th.esNOSPAMgmail.com> wrote in message
news:ugyTH4Qa...@TK2MSFTNGP04.phx.gbl...
Carlos Sacristan escribi�:
Supongamos que el archivo esta en la ruta "c:\temp" y que su nombre es
"test.txt", entonces podemos usar algo asi como:
USE tempdb;
GO
DECLARE @x xml;
SET @x = (
SELECT *
FROM OPENROWSET(BULK N'C:\Temp\test.txt', SINGLE_BLOB) AS [Document]
);
SELECT @x;
SELECT
x.value('(./no_/text())[1]', 'int') AS RegNo,
x.value('(./name/text())[1]', 'nvarchar(50)') AS RegName
FROM
@x.nodes('/propiedades[1]/registro') AS N(x);
GO
AMB
"op.th" wrote:
> Buenos días grupo, tengo un problemilla, más bien una duda, necesito
> importar en sqlserver express un fichero xml como el descrito abajo. Más
> bien lo que necesito es hacer una select para luego hacer un insert o un
> update de los datos. Cual es la forma más correcta? Como haría una
> select de un fichero xml de este tipo? Desde .net todo perfecto, pero
> desde sqlserver no tengo ni idea y debe ser desde consola :(. Alguién me
> puede ayudar?
>
> <propiedades>
> <registro>
> <no_>1000001</no_>
> <name>LOPEZ ALVAREZ</name>
> </registro>
> <registro>
> <no_>1000002</no_>
> <name>LOPEZ LOPEZ</name>
> </registro>
> </propiedades>
>
> Muchas gracias anticipadas.
>
> Un saludo
> .
>
Muchas gracias a los dos.
Alejandro Mesa escribió:
> On Thursday, November 19, 2009 6:46 AM op.th wrote:
> Buenos d?as grupo, tengo un problemilla, m?s bien una duda, necesito
> importar en sqlserver express un fichero xml como el descrito abajo. M?s
> bien lo que necesito es hacer una select para luego hacer un insert o un
> update de los datos. Cual es la forma m?s correcta? Como har?a una
> select de un fichero xml de este tipo? Desde .net todo perfecto, pero
> desde sqlserver no tengo ni idea y debe ser desde consola :(. Algui?n me
> puede ayudar?
>
> <propiedades>
> <registro>
> <no_>1000001</no_>
> <name>LOPEZ ALVAREZ</name>
> </registro>
> <registro>
> <no_>1000002</no_>
> <name>LOPEZ LOPEZ</name>
> </registro>
> </propiedades>
>
> Muchas gracias anticipadas.
>
> Un saludo
>> On Thursday, November 19, 2009 7:06 AM Carlos Sacristan wrote:
>> En los BOL vienen muchos ejemplos de tratamiento de xml.
>>
>> Una posibilidad de lo que indicas podr?a ser:
>>
>> declare @a xml
>>
>> set @a = '<propiedades>
>> <registro>
>> <no_>1000001</no_>
>> <name>LOPEZ ALVAREZ</name>
>> </registro>
>> <registro>
>> <no_>1000002</no_>
>> <name>LOPEZ LOPEZ</name>
>> </registro>
>> </propiedades>'
>>
>> select i2.num.query('./text()') as no_
>> , i3.nombre.query('./text()') as name
>> from @a.nodes('propiedades/registro') i1(registro)
>> CROSS APPLY i1.registro.nodes('./no_') as i2(num)
>> CROSS APPLY i1.registro.nodes('./name') as i3(nombre)
>>
>> --
>> -----------------------------
>> "Caminar sobre el agua y desarrollar software a partir de unas
>> especificaciones es f?cil, si ambas est?n congeladas."
>> Edward V. Berard, ingeniero inform?tico
>>> On Thursday, November 19, 2009 8:08 AM op.th wrote:
>>> Hola Carlos, muchas gracias por tu respuesta, he leido esa parte de los
>>> bol, el problema que tengo es que no s? abrir el fichero, por ejemplo,
>>> si tengo ubicado el fichero en c:\temp\fichero.xml, como lo abro para
>>> introducirlo en la variable @a???
>>>
>>>
>>> Carlos Sacristan escribi?:
>>>> On Thursday, November 19, 2009 8:43 AM Alejandro Mesa wrote:
>>>> Expandiendo un poquito lo dicho por Carlos, puedes usar la funcion OPENROWSET
>>>> para importar el archivo hacia una variable XML, y luego podras hacer uso de
>>>> lo metodos asociados con este tipo.
>>>>
>>>> Supongamos que el archivo esta en la ruta "c:\temp" y que su nombre es
>>>> "test.txt", entonces podemos usar algo asi como:
>>>>
>>>> USE tempdb;
>>>> GO
>>>> DECLARE @x xml;
>>>>
>>>> SET @x = (
>>>> SELECT *
>>>> FROM OPENROWSET(BULK N'C:\Temp\test.txt', SINGLE_BLOB) AS [Document]
>>>> );
>>>>
>>>> SELECT @x;
>>>>
>>>> SELECT
>>>> x.value('(./no_/text())[1]', 'int') AS RegNo,
>>>> x.value('(./name/text())[1]', 'nvarchar(50)') AS RegName
>>>> FROM
>>>> @x.nodes('/propiedades[1]/registro') AS N(x);
>>>> GO
>>>>
>>>>
>>>> AMB
>>>>
>>>>
>>>>
>>>> "op.th" wrote:
>>>>> On Thursday, November 19, 2009 9:44 AM op.th wrote:
>>>>> Sois unos genios!!! simple y conciso.
>>>>>
>>>>> Muchas gracias a los dos.
>>>>>
>>>>> Alejandro Mesa escribi??: