Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Вниз

Загрузка xml с удаленного ресурса   Найти похожие ветки 

 
alsov ©   (2006-10-26 10:28) [0]

Приветствую, Мастера

Есть некий xml файл, который отдает http сервер.

Нужно сделать выборку из его и сформировать resultset.

Как получить из xml выборку я разобрался. Делаю так:

begin
 DECLARE @idoc int
 EXEC sp_xml_preparedocument @idoc OUTPUT, "
<?xml version="1.0" encoding="Windows-1251" ?>
<root>
 <tag value="Value1" date="2006-10-25" time="17:04:19" />
 <tag value="Value2" date="2006-10-25" time="17:04:19" />
 <tag value="Value3" date="2006-10-25" time="17:04:19" />
 <tag value="Value4" date="2006-10-25" time="17:04:19" />
 <tag value="Value5" date="2006-10-25" time="17:04:19" />
</root>"
 SELECT *
 FROM OPENXML (@idoc, "/root/tag",1)
         WITH (value  varchar(15),
               date varchar(20),
               time varchar(20)
               )

 EXEC sp_xml_removedocument @iDoc
end


Но как вместо строки запихнуть урл на xml ума не приложу.

Заранее спасибо за любую помощь


 
alsov ©   (2006-10-26 15:22) [1]

Все разобрался сам
Нашел процедуру

CREATE PROCEDURE LoadXMLFromFile
(
@tcFileNameVARCHAR(255),
@tcXMLStringVARCHAR(8000) OUTPUT
) AS
BEGIN
-- Scratch variables used in the script
DECLARE @retVal INT
DECLARE @oXML INT
DECLARE @errorSource VARCHAR(8000)
DECLARE @errorDescription VARCHAR(8000)
DECLARE @loadRetVal INT

-- Initialize the XML document
EXEC @retVal = sp_OACreate "MSXML2.DOMDocument", @oXML OUTPUT
IF (@retVal <> 0)
BEGIN
-- Trap errors if any
EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
RAISERROR (@errorDescription, 16, 1)

-- Release the reference to the COM object
EXEC sp_OADestroy @oXML
RETURN
END

EXEC @retVal = sp_OASetProperty @oXML, "async", 0
IF @retVal <> 0
BEGIN
-- Trap errors if any
EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
RAISERROR (@errorDescription, 16, 1)

-- Release the reference to the COM object
EXEC sp_OADestroy @oXML
RETURN
END

-- Load the XML into the document
EXEC @retVal = sp_OAMethod @oXML, "load", @loadRetVal OUTPUT, @tcFileName
IF (@retVal <> 0)
BEGIN
-- Trap errors if any
EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
RAISERROR (@errorDescription, 16, 1)

-- Release the reference to the COM object
EXEC sp_OADestroy @oXML
RETURN
END

-- Get the loaded XML
EXEC @retVal = sp_OAMethod @oXML, "xml", @tcXMLString OUTPUT
IF (@retVal <> 0)
BEGIN
-- Trap errors if any
EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
RAISERROR (@errorDescription, 16, 1)

-- Release the reference to the COM object
EXEC sp_OADestroy @oXML
RETURN
END

-- Release the reference to the COM object
EXEC sp_OADestroy @oXML

END


Все равно не решило проблемы. Но я думаю что решения её в mssql нет вообще.

Первая проблема (скорее самая важная) - невозможно из этого кода сделать вьюху(или функцию) и обращаться в xml как к таблице.
Вторая - проблема xml большого размера. Очень негативно влияет на производительность.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.013 c
2-1166795269
Digi
2006-12-22 16:47
2007.01.14
Uninstall


2-1166630378
ГореПрограммер
2006-12-20 18:59
2007.01.14
Работа с строками


1-1164029559
StriderMan
2006-11-20 16:32
2007.01.14
TDBF.PackTable


15-1166768633
Чапаев
2006-12-22 09:23
2007.01.14
Навеяно ветками про образование. "Их нравы"


15-1166984514
wl
2006-12-24 21:21
2007.01.14
шапка деда мороза





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский