OPENXML y archivos XML

01/11/2006 - 20:33 por devhi0000 | Informe spam
Hola.

Mi inquietud es la siguiente: He usado OPENXML para leer XML que se lo puede
almacenar en una variable. Sin embargo, si el tamaño del XML supera el tipo
VARCHAR, ya no se puede hacerlo. Necesito saber sin con OPENXML puedo usar
como origen de datos un archivo XML que está en el disco duro, o en su lugar,
que otra alternativa tengo para lograr el mismo resultado.

!!! GRACIAS ¡¡¡¡¡

Preguntas similare

Leer las respuestas

#6 devhi0000
07/11/2006 - 14:21 | Informe spam
Claro

La idea básica es encontrar una forma automatizada de subir masivamente
datos a tablas SQL SRV 2005 Express a partir de archivos XML. El proceso de
subida de datos se lanza desde una aplicación hecha en Visual Foxpro 9.

Se piesa usar un SP como el siguiente para poblar la tabla Rec_Tv de SQL SRV
2005 a partir de un archivo XML. El SP LeerXML es un prototipo, no está
completo, pero contiene los pasos iniciales en los que tengo problemas. A
este SP hay que enviarle como parámetro el contenido del archivo XML.
Inicialmente el contenido del archivo XML se sube en una tabla comodin de
nombre T la cual tiene la columna XMLcol de tipo XML. El proceso se puede
organizar en los siguientes pasos:

0) Extracto del contenido del archivo XML:
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="CURREC_TVConEsquemaExterno_CentradoAtributos_VFP.xsd">
<currec_tv dimemp="ML" nro_sol="32" mucipio="LA ROSALINA" nom_sol="PEPITO"
fec_sol="2001-01-02" hor_sol="1:55p" fec_rec="2001-01-03" hor_rec="4:45p"
muestra="1" laborat="6849" semana="1" analisis="TV" cultivo="01"
variedad="01070" />
<currec_tv dimemp="ML" nro_sol="33" mucipio="LA ROSALINA" nom_sol="PEPITO"
fec_sol="2001-01-22" hor_sol="3:19p" fec_rec="2001-01-24" hor_rec="10:8a"
muestra="1" laborat="6922" semana="4" analisis="TV" cultivo="01"
variedad="01005" />
</VFPData>


1) Para poblar la tabla con el contenido del archivo XML:

delete from t
INSERT INTO T(XmlCol)
SELECT * FROM OPENROWSET(
BULK 'E:\Chia\2006\CURREC_TVConEsquemaExterno_CentradoAtributos_VFP.xml',
SINGLE_BLOB) AS x
select * from t

2) Ejecutar el SP LeerXML y pasarle como parámetro la columna T.XMLcol
Esto es lo que no sé cómo hacer
..


3) Este es el contenido del SP LeerXML

ALTER PROCEDURE [dbo].[LeerXML]
@xmlDocument TEXT

AS
BEGIN
SET NOCOUNT ON

DECLARE @docHandle int

EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlDocument

DECLARE @nTipoXML_Atributos int
DECLARE @nTipoXML_Elementos int
DECLARE @nTipoXML_Mixto int
DECLARE @nTipoXML int

set @nTipoXML_Atributos = 1 -- Los datos están como atributos <currectv>
muestra="1" nom_sol="pepito" <currectv>
set @nTipoXML_Elementos = 2 --Los datos están como en forma de elementos
XML <muestra>1</muestra>
set @nTipoXML_Mixto = 3 -- Los datos están como en forma mixta como
atributos y elementos(etiquetas)

set @nTipoXML = @nTipoXML_Atributos -- Definir el tipo de XML a procesar.

SELECT *
FROM OPENXML (@docHandle, '/VFPData/currec_tv', @nTipoXML)
WITH Rec_tv

EXEC sp_xml_removedocument @docHandle

END




GRACIAS...





"Maxi" wrote:

Hola, no comprendo tu pregunta :( podrias mostrarme un ejemplo ?


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"devhi0000" escribió en el mensaje
news:
> Hola...
>
> Hice una prueba con BULK INSERT y una tabla con una columna XML.
> Efectivamente se sube el contenido del archivo XML. Ahora cómo hago para
> enviar el contenido de esta columna al EXEC sp_xml_preparedocument
> @docHandle
> OUTPUT, @xmlDocument
> O cómo es el proceso para insertar estos datos en la tabla respectiva.?
>
>
> Gracias
>
> "Maxi" wrote:
>
>> Si usas SQL2005 te recomiendo que ya utilices el tipo de datos XML (sino
>> podes hacer lo que ha indicado el bueno de Alejandro)
>>
>>
>> Salu2
>>
>> Microsoft MVP SQL Server
>> Culminis Speaker
>> INETA Speaker
>>
>> "devhi0000" escribió en el mensaje
>> news:
>> > Hola.
>> >
>> > Mi inquietud es la siguiente: He usado OPENXML para leer XML que se lo
>> > puede
>> > almacenar en una variable. Sin embargo, si el tamaño del XML supera el
>> > tipo
>> > VARCHAR, ya no se puede hacerlo. Necesito saber sin con OPENXML puedo
>> > usar
>> > como origen de datos un archivo XML que está en el disco duro, o en su
>> > lugar,
>> > que otra alternativa tengo para lograr el mismo resultado.
>> >
>> > !!! GRACIAS ¡¡¡¡¡
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida