Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Rellenar tabla a partir de xml (SQL Server 2005)

Estas en el tema de Rellenar tabla a partir de xml (SQL Server 2005) en el foro de SQL Server en Foros del Web. Hola! Tengo la siguiente tabla: CREATE TABLE TAGS ( id INT IDENTITY, Id_tag nvarchar(20), Cat_Tecnica_Uv INT , ) Y el siguiente formato de xml: <?xml ...
  #1 (permalink)  
Antiguo 17/04/2012, 13:05
 
Fecha de Ingreso: enero-2009
Mensajes: 19
Antigüedad: 15 años, 2 meses
Puntos: 1
Exclamación Rellenar tabla a partir de xml (SQL Server 2005)

Hola!

Tengo la siguiente tabla:


CREATE TABLE TAGS
(
id INT IDENTITY,
Id_tag nvarchar(20),
Cat_Tecnica_Uv INT ,
)

Y el siguiente formato de xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Saldos>
<Tag><Id_tag>09900007306</Id_tag><Cat_Tecnica_Uv>1</Cat_Tecnica_Uv></Tag><Tag><Id_tag>09900008293</Id_tag><Cat_Tecnica_Uv>1</Cat_Tecnica_Uv>
<Saldos>


Lo que quiero es ir cargando en la tabla ficheros con ese formato (de mas de medio millon de elementos <Tag>)

Como puedo hacer eso?

Probe:

CREATE TABLE [dbo].[saldos_xml]([xmlOriginal] [xml] NOT NULL)
insert into saldos_xml(xmlOriginal)SELECT cast(x as xml)
FROM OPENROWSET(BULK 'X:\Fichero020412001526.xml',SINGLE_BLOB)
AS T(x)


INSERT INTO TAGS
SELECT
N.C.value('Id_tag[1]', 'nvarchar(20)') Id_tag,
N.C.value('Cat_Tecnica_Uv[1]', 'int') Cat_Tecnica_Uv
Fecha_Estado_Tag
FROM saldos_xml
CROSS APPLY xmlOriginal.nodes('/Saldos/Tag') N(C)


Pero lo veo ineficiente. Necesito cargarlos en la tabla TAGS para luego recorrerlos e ir guardando en otras tablas y haciendo diferentes operaciones.

¿Cómo podría hacerlo de forma más optima sin tener que guardarlos en SALDOS_XML, sino directamente en la tabla TAGS?

Un saludo y muchas gracias de antemano
  #2 (permalink)  
Antiguo 17/04/2012, 13:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Rellenar tabla a partir de xml (SQL Server 2005)

Puedes aplicar el select diretamente en el rowset algo digamos asi:


select campos from OPENROWSET

estos campos van a tener las propiedades que necesitas para trabajar con ellos :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: fecha, rellenar, select, server, sql, tabla, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:12.