Конференция "Базы" » выгрузить xml из хранимки в файл [D7, MSSQL]
 
  • gameus © (24.10.08 18:40) [0]
    Добрый день, подскажите плиз как программно из хранимки

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


    получить выгрузку и сохранить результат в файл.
    Если не трудно пример.
  • gameus © (25.10.08 12:46) [1]
    обнаружил, что если выполнять через 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...
  • sniknik © (25.10.08 13:52) [2]
    > Вопрос, как теперь это реализовать из delphi...
    запрос у тебя есть ->
    select * from EVENT for xml auto
    осталось только выполнить, да сохранить значения полей из полученного рекордсета в файл...
    т.е. тоже самое что делает sqlcmd  в приведённом примере.

    сложности организовать цикл типа
    while  not dataset.eof do begin
     writeln(file, dataset.fields[0].asstring);
     dataset.next
    end
    ???
  • gameus © (25.10.08 15:33) [3]
    при for xml auto на выходе получаем blob поле в котором хлам, попробуйте сами
    там даже цикл делать не нужно все данные в dataset.fields[0]
  • sniknik © (25.10.08 16:22) [4]
    > получаем blob поле в котором хлам, попробуйте сами
    это не хлам, это юникод.

    > там даже цикл делать не нужно все данные в dataset.fields[0]
    это потому, что данных у тебя мало.
  • gameus © (25.10.08 16:57) [5]
    как их к нормальному виду привести ? при Utf8ToUnicode() получаем мусор...

    если возможно код плиз
  • gameus © (25.10.08 17:00) [6]
    > там даже цикл делать не нужно все данные в dataset.fields[0]
    это потому, что данных у тебя мало.

    проверил в sql server 2005 - при любом количестве данных одна запись
  • sniknik © (25.10.08 17:39) [7]
    > если возможно код плиз
    никакого кода, все мышкой... делаешь подключение через ODBC (преобразование пройдет само из блоб в мемо-ansi), подключаешь датасет, dbmemo, соединяешь, пишешь запрос, открываешь датасет прям в режиме разработки, в dbмемо будет нужный текст.

    > проверил в sql server 2005 - при любом количестве данных одна запись
    нет 2005го, в 200м бьется по 4066 байт, может есть какая то настройка увеличивающая этот предел... х.з.
 
Конференция "Базы" » выгрузить xml из хранимки в файл [D7, MSSQL]
Есть новые Нет новых   [134477   +39][b:0][p:0.001]