Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

выгрузить xml из хранимки в файл [D7, MSSQL]


gameus ©   (2008-10-24 18:40:00) 

Добрый день, подскажите плиз как программно из хранимки

USE [database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[MyPrc]
AS
select * from EVENT for xml auto

получить выгрузку и сохранить результат в файл.
Если не трудно пример.


sniknik   (2008-10-25 17:39:00) [1]

> если возможно код плиз
никакого кода, все мышкой... делаешь подключение через ODBC (преобразование пройдет само из блоб в мемо-ansi), подключаешь датасет, dbmemo, соединяешь, пишешь запрос, открываешь датасет прям в режиме разработки, в dbмемо будет нужный текст.

> проверил в sql server 2005 - при любом количестве данных одна запись
нет 2005го, в 200м бьется по 4066 байт, может есть какая то настройка увеличивающая этот предел... х.з.


gameus   (2008-10-25 17:00:00) [2]

> там даже цикл делать не нужно все данные в dataset.fields[0]
это потому, что данных у тебя мало.

проверил в sql server 2005 - при любом количестве данных одна запись


gameus   (2008-10-25 16:57:00) [3]

как их к нормальному виду привести ? при Utf8ToUnicode() получаем мусор...

если возможно код плиз


sniknik   (2008-10-25 16:22:00) [4]

> получаем blob поле в котором хлам, попробуйте сами
это не хлам, это юникод.

> там даже цикл делать не нужно все данные в dataset.fields[0]
это потому, что данных у тебя мало.


gameus   (2008-10-25 15:33:00) [5]

при for xml auto на выходе получаем blob поле в котором хлам, попробуйте сами
там даже цикл делать не нужно все данные в dataset.fields[0]


sniknik   (2008-10-25 13:52:00) [6]

> Вопрос, как теперь это реализовать из delphi...
запрос у тебя есть ->
select * from EVENT for xml auto
осталось только выполнить, да сохранить значения полей из полученного рекордсета в файл...
т.е. тоже самое что делает sqlcmd  в приведённом примере.

сложности организовать цикл типа
while  not dataset.eof do begin
 writeln(file, dataset.fields[0].asstring);
 dataset.next
end
???


gameus   (2008-10-25 12:46:00) [7]

обнаружил, что если выполнять через sqlcmd получим следующее
при
sqlcmd -E -S sqlserver -d database -Q"select * from EVENT for xml auto" -oD:\01.txt
в результате получим хлам,
а при
sqlcmd -E -S sqlserver -d database -ic:\1.sql -oc:\output.txt
где 1.sql

:XML ON
select * from EVENT for xml auto

получим желаемый результат.
Вопрос, как теперь это реализовать из delphi...


Наверх

Титульная страница Поиск, карта сайта Написать письмо